Node.js在Windows上无法安装全局的npm包(不是路径问题)

3
所以,我有一个奇怪的问题,甚至不确定我能否识别。我刚刚在我的Windows 7机器上安装了当前版本的Node.js(v.10.*)。我尝试全局安装了几个包(gulp和yoeman),但是它们安装时出现错误,在我的C:\Users\Michael\AppData\Roaming\npm\node_modules目录中,许多包文件都丢失了。显然,当我尝试全局运行命令时,它会失败,因为没有命令。它从来没有被创建过。
一些其他全局安装的包可以正常工作(bower和grunt)。
使事情变得非常棘手的是,当我将gulp安装到本地文件夹(没有-g)时,安装完美无缺,我可以在命令前加上整个路径来使用gulp。显然,我可以将该路径添加到我的系统属性中,以便该命令成为全局命令,但这并不能真正解决我的问题。为什么全局安装时会出现错误,而本地安装时却不会呢?
当我看着gulp在本地安装时的目录,我看到文件正在被创建。然后第一个错误出现了,许多文件被删除了。
我相信日志中与我的gulp安装相关的部分是:
6949 verbose lock lodash.noop@2.4.1 C:\Users\Michael\AppData\Roaming\npm-cache\7e62c2bb-lodash-noop-2-4-1.lock
6950 error Error: ENOENT, lstat 'C:\Users\Michael\AppData\Roaming\npm\node_modules\gulp\node_modules\vinyl-fs\node_modules\glob-stream\node_modules\glob2base\node_modules\lodash.findindex\node_modules\lodash.createcallback\node_modules\lodash._baseisequal\node_modules\lodash._releasearray\node_modules\lodash._arraypool'
6951 error If you need help, you may report this *entire* log,
6951 error including the npm and node versions, at:
6951 error     <http://github.com/npm/npm/issues>
6952 error System Windows_NT 6.1.7601
6953 error command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "-g" "gulp"
6954 error cwd c:\wamp\www\phoenix\animus\gulp
6955 error node -v v0.10.28
6956 error npm -v 1.4.9
6957 error path C:\Users\Michael\AppData\Roaming\npm\node_modules\gulp\node_modules\vinyl-fs\node_modules\glob-stream\node_modules\glob2base\node_modules\lodash.findindex\node_modules\lodash.createcallback\node_modules\lodash._baseisequal\node_modules\lodash._releasearray\node_modules\lodash._arraypool
6958 error fstream_path C:\Users\Michael\AppData\Roaming\npm\node_modules\gulp\node_modules\vinyl-fs\node_modules\glob-stream\node_modules\glob2base\node_modules\lodash.findindex\node_modules\lodash.createcallback\node_modules\lodash._baseisequal\node_modules\lodash._releasearray\node_modules\lodash._arraypool
6959 error fstream_unc_path \\?\C:\Users\Michael\AppData\Roaming\npm\node_modules\gulp\node_modules\vinyl-fs\node_modules\glob-stream\node_modules\glob2base\node_modules\lodash.findindex\node_modules\lodash.createcallback\node_modules\lodash._baseisequal\node_modules\lodash._releasearray\node_modules\lodash._arraypool
6960 error fstream_type Directory
6961 error fstream_class DirWriter
6962 error code ENOENT
6963 error errno 34
6964 error fstream_stack C:\Program Files\nodejs\node_modules\npm\node_modules\fstream\lib\writer.js:284:26
6964 error fstream_stack Object.oncomplete (fs.js:107:15)
6965 verbose exit [ 34, true ]

如果有日志文件的话,那会有所帮助。

谢谢。

1个回答

5

Windows操作系统只能支持最多260个字符作为路径长度。我希望Node.js开发者们能够解决嵌套模块的方法。为了解决这个问题,我简单地将全局npm模块路径从AppData更改为c:以获取一些字符,并解决了这个问题。我知道这个hack只能提供你一些字符,但对我而言它是有效的。

  1. 以管理员身份打开记事本。
  2. 进入[nodejs安装目录]\node_modules\npm的位置。
  3. 打开“npmrc”文件并更改prefix=c:\npm。
  4. 保存文件。

那会很好,但他们说他们不会这样做:https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2156195-fix-260-character-file-name-length-limitation - crush

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接