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文件夹,但这也发生在我的主目录之外的文件夹中。
关于我尝试解决此问题的任何提示?
答案 0 :(得分:5)
原来我在注册表的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
是值得检查的好地方。
答案 1 :(得分:0)
不是100%肯定,但我认为如果你没有package.json文件,你会得到这个。尝试创建一个(npm init)然后尝试安装任何模块。然后应该将它们保存在您当前所在目录的node_modules下。