npm安装不能与–prefix一起使用
看来, npm install --prefix ./server
(没有参数)不工作 – npm install --prefix ./server
标志。 我只想从package.json安装所有的软件包。 我得到的命令是:
npm WARN enoent ENOENT:没有这样的文件或目录,打开'/home/…/ProjectName/server/package.json'
当我把npm install package_name -S --prefix ./server
作为例子的时候,一切正常。 然后NPM将在server
创buildnode_modules
并添加package_name
包。
我的文件结构是:
ProjectName | +-- client | +-- node_modules | +-- package.json +-- server | +-- node_modules +-- package.json
“主” package.json
包含所有的脚本(Heroku和我)和服务器的可靠性。 client
是Angular2应用程序,这就是为什么它有自己的node_modules和package.json。
我使用NPM 4.2.0。 5.0.3版本(最新?)似乎--prefix
标志根本不工作。
编辑#1
我刚刚发现可以通过npm install
(它将在我的项目文件夹中安装node_modules
)解决我的问题,然后将node_modules
复制到server/node_modules
。 没有那个副本jasmine
在tsc
构build期间抛出错误。
现在,我必须在主目录中有node_modules
,并在server
复制它们。 太奇怪了
编辑#2
据@Damian Lattenero
回答:
npm –prefix ./server install ./ProjectName/package.json
要么
npm –prefix ProjectName / server install ./ProjectName/package.json
不工作,并生成:
npm ERR! 代码ENOLOCAL npm ERR! 无法安装“RecursiveNotebook3 / package.json”,因为它不是一个目录,也不是以.tgz,.tar.gz或.tar结尾的文件
这工作:
npm –prefix ProjectName / server install ./ProjectName
但生成:
npm WARN saveError ENOENT:没有这样的文件或目录,打开'/home/tb/Projects/RecursiveNotebook3/server/package.json'npm通知创build一个lockfile作为package-lock.json。 你应该提交这个文件。 npm WARN enoent ENOENT:没有这样的文件或目录,打开'/ home / tb / Projects / RecursiveNotebook3 / server / package.json'
和
package-lock.json
旁边
和
空的etc
目录旁边的node_modules
和
使用mongodb包构build( tsc -p server
)有一些问题。
运行最新版本的Ubuntu(Ubuntu 16.04.2 LTS),我遇到了与npm install
相同的问题。 我也有一个ENOENT
错误,表示npm
找不到必要的文件。
当我安装nodejs-legacy
,如下所示:
sudo apt-get install nodejs-legacy
npm
随后编译好,我的Angular应用程序部署应该如此。
尝试:
npm --prefix ./server install ./ProjectName/package.json
要么
npm install --prefix ./server ./ProjectName/package.json
另外,为了更好地理解–prefix做什么,你可以检查这两个答案:
如何将npm安装到指定的目录?
npm – 在不同的文件夹中安装软件包的依赖关系?
解
package.json
这些行解决了我所有的问题:
“脚本”:{
"init": "npm i && mv ./node_modules ./server && sudo npm i typescript -g",
奇怪,但作品…