看起来npm install --prefix ./server
(没有参数)不适用于--prefix
旗帜。我只想安装 package.json 中的所有软件包。
该命令后我得到的只是:
npm WARN enoent ENOENT:没有这样的文件或目录,打开
'/home/.../ProjectName/server/package.json'
当我放的时候一切都很好npm install package_name -S --prefix ./server
例如。然后NPM将创建node_modules
in server
并将添加package_name
包裹。
我的文件结构是:
ProjectName
|
+-- client
| +-- node_modules
| +-- package.json
+-- server
| +-- node_modules
+-- package.json
"Main" package.json
包含所有脚本(对于 Heroku 和我来说)和服务器的依赖项。client
是 Angular2 应用程序,这就是它拥有自己的 node_modules 和 package.json 的原因。
我使用 NPM 4.2.0。版本 5.0.3(最新?)似乎--prefix
标志根本不起作用。
EDIT #1
我刚刚发现我可以解决我的问题npm install
(这将安装node_modules
在我的项目文件夹中)然后复制node_modules
to server/node_modules
。没有那个副本jasmine
期间抛出错误tsc
build.
现在我必须有node_modules
在主目录和它们的副本server
。那太奇怪了..
EDIT #2
根据@Damian Lattenero
answer:
npm --prefix ./server install ./ProjectName/package.json
or
npm --prefix 项目名称/服务器安装 ./项目名称/package.json
不工作并生成:
npm 错误!代码 ENOLOCAL npm 错误!无法安装
“RecursiveNotebook3/package.json”,因为它不是一个目录,也不是
名称以 .tgz、.tar.gz 或 .tar 结尾的文件
这有效:
npm --prefix 项目名称/服务器安装 ./项目名称
但会生成:
npm WARN saveError ENOENT:没有这样的文件或目录,打开
'/home/tb/Projects/RecursiveNotebook3/server/package.json' npm 通知
创建了一个锁文件 package-lock.json。您应该提交此文件。
npm WARN enoent ENOENT:没有这样的文件或目录,打开 '/home/
tb/Projects/RecursiveNotebook3/server/package.json'
and
package-lock.json
旁边node_modules
and
empty etc
目录旁边node_modules
and
构建存在一些问题(tsc -p server
)与 mongodb 包。