标签归档:npm

[Node.js]解决‘gbk’ codec can’t decode byte 0x80 in position

每次换一个环境执行npm i都会碰到这样的问题,记录一下解决方法,

方法1:手动去报错的文件里指定编码为UTF-8,我自己第一次解决这个问题就是用的这个办法,刚刚想找找看有没有别的解决方法的时候发现别人也有去手动改源码的,放个参考链接

简单地说就是找到报错的那行,给open函数加个 encoding='utf-8' 参数就可以解决问题,但这样属于改了人家文件,更新后还是会变回去的,所以现在我不这样做了。

方法2:去控制面板的区域设置里到“管理”标签页下,“更改系统区域设置”,把“Beta版:使用Unicode UTF-8提供全球语言支持(U)”勾上,然后重启一下,python就会默认用utf-8来读文件了。

这个方法会改变整个系统的默认代码页,最主要的影响是会导致使用非Unicode的程序乱码甚至崩溃,还有在gbk设置时以ansi保存的含有中文的bat脚本会乱码。如果影响不大的话倒是可以让系统一直保持在这个区域选项上,影响某些软件的正常使用的话在执行完需要的编译任务后还得改回去。在这种模式下可以使用“locale emulator”这样的软件以Chinese模式启动程序,以解决程序的乱码和崩溃问题。

方法3:我没试过,理论上应该可行,从python本体入手,把它的默认编码设置成utf-8,参考这里的方案2。这个没用

npm多用户

npm的用户登录信息写在用户目录的 .npmrc 文件里,所以同一时间只能登录一个账号,要切换账号的话就要重新用 npm login 登录,比较麻烦。

于是写了个切换.npmrc文件来直接切换用户的shell脚本

分别login到对应的用户,然后查看用户目录里的.npmrc文件内容,复制出来,填到下面对应的地方

保存成比如 npmuser 文件放在某个PATH目录里,然后用 npmuser user1 这样的命令就可以直接切换用户而不用再登录了。

Error: Cannot find module ‘npmlog’

手动安装node的时候一不注意就会出现这个错误,装好了之后使用命令 npm 测试一下出来了这个错误: Error: Cannot find module 'npmlog' 。

 

这一般是放在/bin里的链接不对导致的。

可能情况1

链接指向的不是 node_modules/npm/bin/npm-cli.js ,初次手动安装难免会搞不清要链接哪个文件,把链接指向正确的位置即可。

情况2

使用的不是软链接,由于npm-cli.js中使用的是相对路径,要是你一不小心链了个硬链接,那么npm就会从/bin解析相对路径,所以就找不到npmlog模块了。要使用软链接,在ln命令后加上 -s 选项: ln -s node_modules/npm/bin/npm-cli.js /bin/npm

 

解决node无法调用全局模块的问题

刚刚我把SPDY装到全局, npm -g install spdy ,

可以看到这个模块被装到/usr/local/lib/node_modules里了

 

 

 

然后开个环境测试一下,结果

吓得我满脑子都是doge!!!这是为什么?

继续阅读解决node无法调用全局模块的问题