在文件夹上执行npm安装时,软件包将安装在c:\Users\<user>\node-modules上,而不是.\<project folder>\node-modules上
我已经尝试更新npm config save=false,但这并没有解决问题
PS C:\Users\danielk\Documents\udemy_nodejs\FirstExpressApp> npm install express
npm WARN danielk No description
npm WARN danielk No repository field.
npm WARN danielk No license field.
+ express@4.17.1
updated 1 package and audited 126 packages in 2.004s
found 0 vulnerabilities
PS C:\Users\danielk\Documents\udemy_nodejs\FirstExpressApp> dir
Directory: C:\Users\danielk\Documents\udemy_nodejs\FirstExpressApp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 21/08/2019 7:54 AM 27 app.js在项目文件夹中执行npm install express时,我希望在项目文件夹中创建node-modules子文件夹,并在node-modules子文件夹中安装express模块。但是它是在C:\Users\danielk\node-modules中创建的。
谁能帮助解决哪里出了问题,以及如何修复这个问题?
发布于 2019-08-21 12:01:04
当您执行npm安装时,npm实际上会将包安装到您当前所在的"npm项目“中。请参见以下示例:
eric_@Eric-Dev-Laptop MINGW64 ~/Desktop/mixed/stackoverflow
$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
package name: (stackoverflow)
[...Truncated...]
Is this OK? (yes)
eric_@Eric-Dev-Laptop MINGW64 ~/Desktop/mixed/stackoverflow
$ mkdir child
eric_@Eric-Dev-Laptop MINGW64 ~/Desktop/mixed/stackoverflow
$ cd child/
eric_@Eric-Dev-Laptop MINGW64 ~/Desktop/mixed/stackoverflow/child
$ npm install express
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN stackoverflow@1.0.0 No description
npm WARN stackoverflow@1.0.0 No repository field.
+ express@4.17.1
added 50 packages from 37 contributors and audited 126 packages in 3.021s
found 0 vulnerabilities
eric_@Eric-Dev-Laptop MINGW64 ~/Desktop/mixed/stackoverflow/child
$ ls
eric_@Eric-Dev-Laptop MINGW64 ~/Desktop/mixed/stackoverflow/child
$ ls ..
child/ node_modules/ package.json package-lock.json
eric_@Eric-Dev-Laptop MINGW64 ~/Desktop/mixed/stackoverflow/child
$ ls ../node_modules/
accepts/ escape-html/ mime/ safer-buffer/
array-flatten/ etag/ mime-db/ send/
body-parser/ express/ mime-types/ serve-static/
bytes/ finalhandler/ ms/ setprototypeof/
content-disposition/ forwarded/ negotiator/ statuses/
content-type/ fresh/ on-finished/ toidentifier/
cookie/ http-errors/ parseurl/ type-is/
cookie-signature/ iconv-lite/ path-to-regexp/ unpipe/
debug/ inherits/ proxy-addr/ utils-merge/
depd/ ipaddr.js/ qs/ vary/
destroy/ media-typer/ range-parser/
ee-first/ merge-descriptors/ raw-body/
encodeurl/ methods/ safe-buffer/发生的事情是,我创建了一个stackoverflow文件夹,用npm init初始化了一个"npm项目“,并将cd添加到child文件夹中。当我在里面执行npm install express时,express模块会被意外地安装到stackoverflow/node_module中。这就是说,当你在做一个程序,比如myprogram,即使你在里面的某个子文件夹中(比如myprogram/lib/)并且你执行了npm install,这个模块仍然会安装到myprogram中。
与您的情况相比,这可能是因为您的C:\Users\danielk\已经是一个npm项目,所以当您在C:\Users\danielk\Documents\udemy_nodejs\FirstExpressApp中时,npm会认为您在C:\Users\danielk\项目中,因此将express模块保存在那里。
至于为什么C:\Users\danielk\成为npm项目,是因为您之前在那里手动执行了npm init,还是在那里执行了第一个npm install,并创建了C:\Users\danielk\node_modules,将其标记为npm项目。
还有一件事,express不是“全局”安装的,你可以通过npm install express -g进行“全局”安装(虽然对于express来说,全局安装是没有用的)。您的案例就是“安装在主目录中”的包。
https://stackoverflow.com/questions/57581202
复制相似问题