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 。 没有那个副本jasminetsc构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", 

奇怪,但作品…