npm install不能使用--prefix

时间:2017-06-09 22:43:24

标签: node.js npm

似乎npm install --prefix ./server(没有args)不能使用--prefix标志。我只想安装package.json中的所有包。 我得到的所有命令都是:

  

npm WARN enoent ENOENT:没有这样的文件或目录,打开   '/家庭/.../项目名/服务器/的package.json'

当我以npm install package_name -S --prefix ./server为例时,一切都很好。然后,NPM将在node_modules中创建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标志根本不起作用。

编辑#1

我刚刚发现我可以使用npm install(将在我的项目文件夹中安装node_modules)解决我的问题,然后将node_modules复制到server/node_modules。如果没有该副本,jasmine会在tsc构建期间抛出错误。

现在我必须在主目录中包含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 notice   创建了一个lockfile作为package-lock.json。你应该提交这个文件。   npm WARN enoent ENOENT:没有这样的文件或目录,打开'/ home /   TB /项目/ RecursiveNotebook3 /服务器/的package.json'

package-lock.json

旁边的

node_modules

etc

旁边的空node_modules目录

使用mongodb软件包构建(tsc -p server)存在一些问题。

6 个答案:

答案 0 :(得分:2)

尝试:

<activity android:name=".main.SettingsActivity"
  android:configChanges="orientation|screenSize"
  android:theme="@style/PreferenceThemeOverlay.v14.Material">
</activity>

npm --prefix ./server install ./ProjectName/package.json

另外,为了更好地理解--prefix的作用,你可以检查这两个答案:

How to npm install to a specified directory?

npm - install dependencies for a package in a different folder?

答案 1 :(得分:1)

运行最新版本的Ubuntu(Ubuntu 16.04.2 LTS),我遇到了与npm install相同的问题。我还遇到ENOENT错误,表示npm找不到必要的文件。

当我安装nodejs-legacy时,如下所示:

sudo apt-get install nodejs-legacy

npm随后编译得很好,我的Angular应用程序按原样部署。

答案 2 :(得分:0)

package.json中的那些行解决了我的所有问题:

  

&#34;脚本&#34;:{

"init": "npm i && mv ./node_modules ./server && sudo npm i typescript -g",

奇怪但有效......

答案 3 :(得分:0)

我的服务器package.json的这部分工作正常:

 "scripts": {
    "start": "node dist/app.js",
    "server": "nodemon --exec ts-node src/app.ts",
    "build": "tsc -p .",
    "client": "npm start --prefix ../client",
    "client:install": "npm install --prefix ../client",
    "client:build": "npm run build --prefix ../client",
    "dev": "concurrently \"npm run server\" \"npm run client\""
  },

答案 4 :(得分:0)

试试这个肯定行得通,我假设您的项目根目录 package.json 也有依赖项。

npm install && npm install --prefix ./server && npm install --prefix ./client

或使用此脚本

"scripts": {
    "client-install": "npm install --prefix ./client",
    "install-all": "npm install && npm run client-install && npm run server-install",
    "server-install": "npm install --prefix ./server",
  },

答案 5 :(得分:-1)

为我工作

npm install --prefix ./server ./server