【问题标题】:always npm install locally from package.json总是从 package.json 本地安装 npm
【发布时间】:2015-12-29 17:43:56
【问题描述】:

虽然我在 docker 容器中运行此设置,但我的项目文件位于 /app/app/package.json 存在

当我执行cd /app && npm install --production(作为root 用户或非root 用户)时,所有依赖项都会安装在~/.npm 文件夹中,而不是显示在/app/node_modules

我也尝试过 npm install --production --verbose --prefix /app,但文件夹 node_modules 仍然没有出现在 app 文件夹中的依赖项。

当我查看错误日志时,我看到几乎每个依赖项的类似消息(例如:安装反应)。

npm verb tar unpack /root/.npm/base62/0.1.1/package.tgz
npm verb tar unpacking to /app/node_modules/react/node_modules/envify/node_modules/jstransform/node_modules/base62
npm verb gentlyRm don't care about contents; nuking /app/node_modules/react/node_modules/envify/node_modules/jstransform/node_modules/base62
npm verb gentlyRm don't care about contents; nuking /app/node_modules/react/node_modules/envify/node_modules/jstransform/node_modules/esprima-fb
npm verb tar unpack /root/.npm/source-map/0.1.31/package.tgz
npm verb tar unpacking to /app/node_modules/react/node_modules/envify/node_modules/jstransform/node_modules/source-map
npm verb gentlyRm don't care about contents; nuking /app/node_modules/react/node_modules/envify/node_modules/jstransform/node_modules/source-map
npm verb tar unpack /root/.npm/esprima-fb/13001.1001.0-dev-harmony-fb/package.tgz
npm verb tar unpacking to /app/node_modules/react/node_modules/envify/node_modules/jstransform/node_modules/esprima-fb
npm verb gentlyRm don't care about contents; nuking /app/node_modules/react/node_modules/envify/node_modules/jstransform/node_modules/esprima-fb

如果我想以 root 用户身份运行,我怎样才能让 npm 始终将 package.json 中列出的所有依赖项安装在 app 目录的 node_modules 文件夹中

使用 npm@2.14.7、node@v4.2.3

【问题讨论】:

  • 你可能想看看这个:stackoverflow.com/questions/14469515/…
  • 遗憾的是,这种方法不起作用。如果我在 docker 脚本中运行 npm install react,我会看到一个 node_modules 文件夹,但运行 npm install,其中 package.json 列出了反应并不会创建 node_modules 文件夹
  • 我在 Amazon Linux 上运行 Node 时遇到了同样的奇怪问题。你找到答案了吗?

标签: node.js docker npm


【解决方案1】:

在没有 --production 的情况下执行 npm install。它应该安装在 node_modules 中

【讨论】:

  • 我也试过了。还是不行。作为澄清,我添加 --production 因为 package.json 中也有 devdependencies。但即使使用只有 1 个依赖项的干净 package.json,我仍然无法将其安装在 node_modules 文件夹中
  • 我认为发生这种情况的原因是因为您一直在尝试以 root 身份安装。你应该看看如何在没有 sudo 的情况下安装包。
  • 这有点令人沮丧。我以非root身份尝试过,同样的事情发生了。我只是无法让它在同一目录中安装任何东西
  • 尝试将此添加到您的 .basrc 文件中PATH="$PATH:$HOME/.npm-packages/bin"
猜你喜欢
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
  • 2016-08-02
  • 2017-02-10
  • 2011-08-24
  • 2018-06-05
  • 2011-09-24
  • 2018-12-25
相关资源
最近更新 更多