无论我从哪个目录执行命令,npm 都坚持使用我的主目录作为当前工作目录。
cmd和Powershell都会发生这种情况,我尝试删除并重新安装 Node ,都使用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>
如果我导航到文件夹,启动 Node REPL 并运行 process.cwd()
返回了我启动 Node 的目录,因此问题似乎仅限于 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 文件夹,但这也会发生在我的主目录之外的文件夹中。
有关我尝试解决此问题的任何提示吗?
最佳答案
结果我有一个cd C:\Users\<myusername>
命令 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
在注册表中。意味着该命令随时执行CMD.EXE
开始了。
不知道它是如何进入那里的,我可能在某个时候自己添加了它。
无论如何,如果有人在执行脚本时和在打开的命令提示符中手动运行相同命令时遇到当前工作目录之间的差异,HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
和HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
是检查的好地方。
关于node.js - npm 始终使用主目录作为当前工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27026014/