npm始终使用主目录作为当前工作目录

时间:2014-11-19 20:06:37

标签: node.js powershell npm

npm坚持使用我的主目录作为当前工作目录,无论我从哪个目录执行命令。

同时发生了cmd和Powershell,我尝试删除并重新安装节点,两者都使用nodejs.org上的安装程序,并通过Chocolatey获得相同的结果。

如果我导航到例如C:\test并运行npm init,向导会将生成的package.json文件放在我的主文件夹中。

如果我从任何文件夹运行npm install <package>,则该软件包将安装到C:\Users\myusername\node_modules

使用此

尝试全局安装软件包也会失败
npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\ProgramData\\chocolatey\\lib\\nodejs.commandline.0.10.33\\tools\\node.exe" "C:\\ProgramData\\chocolatey\\lib\\npm.1.4.9\\tools\\node_modules\\npm\\bin\\npm-cli.js" "install" "gulp" "-g"
npm ERR! cwd C:\Users\<myusername>

如果我导航到一个文件夹,启动节点REPL并运行process.cwd()返回我开始节点的目录,所以问题似乎仅限于npm。

运行npm get会得到以下结果:

C:\test> npm get
; cli configs
registry = "https://registry.npmjs.org/"
user-agent = "npm/1.4.9 node/v0.10.33 win32 x64"

; node bin location = C:\ProgramData\chocolatey\lib\nodejs.commandline.0.10.33\tools\node.exe
; cwd = C:\Users\<myusername>
; HOME = C:\Users\<myusername>
; 'npm config ls -l' to show all defaults.

我已经搜索了很多解决方案,并找到了一些similar issues,但没有解决我的问题。我知道npm遍历目录树以查找node_modules文件夹,但这也发生在我的主目录之外的文件夹中。

关于我尝试解决此问题的任何提示?

2 个答案:

答案 0 :(得分:5)

原来我在注册表的cd C:\Users\<myusername>中有一个HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun命令。这意味着在CMD.EXE开始的任何时候执行此命令。

不知道那是怎么进入的,我可能会在某个时候自己添加它。

无论如何,如果有人在执行脚本时遇到当前工作目录之间的差异,并且在打开的命令提示符中手动运行相同的命令,HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRunHKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun是值得检查的好地方。

答案 1 :(得分:0)

不是100%肯定,但我认为如果你没有package.json文件,你会得到这个。尝试创建一个(npm init)然后尝试安装任何模块。然后应该将它们保存在您当前所在目录的node_modules下。