NPM前缀标志在Windows上无法按预期工作

JRJ*_*man 6 windows command-line-interface node.js npm

我遇到的问题在Mac上不会发生,但在Windows上会发生。我有一个放置文件并将其安装在刚刚放置的文件夹中的项目,它运行的有效命令是“ npm --prefix install”。但是,这会导致Windows错误:

npm ERR! code ENOLOCAL
npm ERR! Could not install from "" as it does not contain a package.json file.
Run Code Online (Sandbox Code Playgroud)

这是完整的日志:

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   '--prefix',
1 verbose cli   'C:\\Users\\jrjur\\Programs\\test\\',
1 verbose cli   'install' ]
2 info using npm@6.4.1
3 info using node@v11.1.0
4 verbose npm-session 59fa294aa88ba17f
5 silly install loadCurrentTree
6 silly install readGlobalPackageData
7 silly fetchPackageMetaData error for file: Could not install from "" as it does not contain a package.json file.
8 timing stage:rollbackFailedOptional Completed in 2ms
9 timing stage:runTopLevelLifecycles Completed in 1102ms
10 verbose stack Error: ENOENT: no such file or directory, open 'C:\Users\jrjur\Programs\package.json'
11 verbose cwd C:\Users\jrjur\Programs
12 verbose Windows_NT 10.0.17134
13 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "--prefix" "C:\\Users\\jrjur\\Programs\\test\\" "install"
14 verbose node v11.1.0
15 verbose npm  v6.4.1
16 error code ENOLOCAL
17 error Could not install from "" as it does not contain a package.json file.
18 verbose exit [ 1, true ]
Run Code Online (Sandbox Code Playgroud)

第7行似乎是错误发生的地方,但是我不知道“ fetchPackageMetaData”的作用是什么,或者它试图从哪个目录读取...

放置的目录确实有package.json,如果我cd进入该目录,则可以正常进行npm安装,而不会出现问题。同样,此问题仅在Windows上,在Mac OS X上不会发生。

如果有帮助,这是发生此问题的生成器(可以通过运行来重现该问题npx tram-one-express test-project):https : //github.com/Tram-One/tram-one-express

小智 4

您需要在 --cwd 选项后添加相同的路径。

npm install --prefix <您的路径> --cwd <您的路径>