在使用npm
安装软件包时,我最近遇到了一个问题,即Node
无法找到模块/脚本。出于某种原因,它正在查看我的C:/
目录,而不是C:/my-project/node_modules
。特别是这个库很麻烦,但我也看到过这种情况。
我使用Node
的v0.10.35运行Win7 x32。
这是我在尝试安装node-sass
时看到的示例:
C:\node\test>npm install node-sass
> node-sass@2.0.0-beta install C:\node\test\node_modules\node-sass
> node scripts/install.js
module.js:340
throw err;
^
Error: Cannot find module 'C:\scripts\install.js'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:929:3
npm ERR! node-sass@2.0.0-beta install: `node scripts/install.js`
npm ERR! Exit status 8
npm ERR!
npm ERR! Failed at the node-sass@2.0.0-beta install script.
npm ERR! This is most likely a problem with the node-sass package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node scripts/install.js
npm ERR! You can get their info via:
npm ERR! npm owner ls node-sass
npm ERR! There is likely additional logging output above.
npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "node-sass"
npm ERR! cwd C:\node\test
npm ERR! node -v v0.10.35
npm ERR! npm -v 1.4.28
npm ERR! code ELIFECYCLE
npm ERR! not ok code 0
一位同事发给我了他的install.js
档案,我把它放在我的根里只是为了看看会发生什么。遗憾的是,一旦npm
尝试安装根模块所需的模块,安装仍会失败。
答案 0 :(得分:1)
尝试在我的Windows系统上安装node-sass时遇到了类似的问题。我将此报告为节点问题(请参阅Windows 8.1 Pro 64-bit: gulp-sass install failing due to node-sass@2.1.1 install script failure)。
我在本地安装的节点中添加了一些额外的日志记录,以查看实际发生的情况并发现以下内容:
nodejs \ node_modules \ npm \ lib \ utils \ spawn.js用于启动脚本\ install.js
通过添加一些额外的日志记录,我发现spawn.js正在使用以下命令行来启动install.js:C:\WINDOWS\system32\cmd.exe /c node scripts/install.js
在一个单独的命令提示符窗口中,我更改为我的c:\ test目录,然后运行C:\WINDOWS\system32\cmd.exe /c node
以查看正在使用的目录节点。
在节点>提示,我跑了process.cwd()
。这显示:c:\\
而非c:\\test
当我看到上面的c:\\
时,我记得我在Windows注册表中为HKEY_CURRENT_USER\Software\Microsoft\Command Processor
添加了一个自动运行设置,以便每次启动cmd.exe时自动运行启动脚本。当我查看我的启动脚本时,我注意到该脚本中的最后一个命令是:cd c:\
。这会导致cmd.exe的每个实例都使用c:\作为其起始目录。
从我的启动脚本中删除cd c:\
后,npm install node-sass正确运行。
我希望这对遇到上述问题所述问题的其他人有所帮助。
答案 1 :(得分:0)
我想知道你的'prefix'配置变量是否已设置。你可以通过运行找到
> npm c get prefix
应该为全局包设置合理的值;如果它设置为“C:\”那么这可能会导致您的问题。
您可以通过运行
找到npm
寻找配置的位置
> npm c get globalconfig
> npm c get localconfig
您可以列出所有配置变量
> npm c ls -l