解决win8下使用微软账户登录后留下中文用户文件夹导致node-gyp无法编译

2015-5-21 10:25:17

在win8下使用需要编译的npm包时,如果用户文件夹是中文的,可能会遇到“error MSB4025: 未能加载项目文件,给定编码中的字符无效”错误。网上看了一圈有两种方案,

其一是修改node-gyp的代码,转换文件编码

http://my.oschina.net/tearlight/blog/279797

另一种就是修改注册表,然后修改用户文件夹改到一个英文目录中。

但是修改用户文件夹的方案我觉得隐患比较多,万一漏改了什么地方以后又挖坑给自己跳,而修改node-gyp的话也会担心node-gyp更新,想了一阵子找到了一个新的解决方案

首先使用管理员权限的命令行进入c:\users目录,然后用mklink命令,将自己的中文用户名创建一个英文的link

mklink /d bangbang93 中文目录名

bangbang93就是要修改为的英文名称

然后找到nodejs目录中的npm.cmd

在第一行添加

@SET USERPROFILE=C:\Users\bangbang93

如果使用了cnpm的话,还要去%USERPROFILE%\AppData\Roaming\npm目录对cnpm.cmd做同样的修改

修改完成后就可以正常编译了