【问题标题】:npm install fails with multi-layered local dependenciesnpm install 因多层本地依赖关系而失败
【发布时间】:2015-04-09 17:25:18
【问题描述】:

如果我依赖一个本身依赖于另一个本地包的本地包,npm install 似乎不起作用。我使用的是 npm 2.5.1 版。

这是我所拥有的:

/src/modules/moduleA 的 package.json:

{
  "name": "moduleA",
  "version": "0.0.1",
  ...
  "dependencies": {
    "bluebird": "^2.9.1",
    "nodemailer": "^1.3.0"
  }
}

/src/modules/moduleB 的 package.json:

{
  "name": "moduleB",
  "version": "1.0.0",
  ...
  "dependencies": {
    "nconf": "~0.6.7",
    "moduleA": "../moduleA"
  }
}

/src/apps/coolApp 的 package.json:

{
  "name": "coolApp",
  "version": "1.0.0",
  ...
  "dependencies": {
    "mysql": "~2.4.2",
    "request": "~2.40.0",
    "cheerio": "~0.17.0",
    "async": "~0.9.0",
    "expand-url": "0.1.3",
    "moduleB": "../../modules/moduleB"
  }
}

现在如果我尝试npm install

cd /src/modules/moduleA
npm install
    [success, yay!]

cd /src/modules/moduleB
npm install
    [success, yay!]

cd /src/apps/coolApp
npm install
    npm ERR! addLocal Could not install /src/node/apps/moduleA
    npm ERR! enoent ENOENT, open '/src/node/apps/moduleA'
    npm ERR! enoent This is most likely not a problem with npm itself
    npm ERR! enoent and is related to npm not being able to find a file.
[oh no!]

出于某种原因,npm 正在尝试为coolApp 安装moduleA,即使它不需要直接安装,而且它使用相对路径字符串,因为它在moduleB 的package.json 文件中指定,尽管这对coolApp 无效,因为它位于相对不同的位置。

【问题讨论】:

    标签: npm


    【解决方案1】:

    我发现如果您在路径前使用“file:”指定本地模块,一切正常。耶

    像这样:

    "moduleB": "file:../../modules/moduleB"
    

    【讨论】:

    • Bower 也发生了同样的情况,但这不起作用。你知道解决方法吗?
    • 对不起,我不知道(假设“文件:”不适用于 Bower 的架构)。
    猜你喜欢
    • 1970-01-01
    • 2019-06-16
    • 2022-07-22
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    相关资源
    最近更新 更多