【问题标题】:Heroku cannot find local npm packageHeroku 找不到本地 npm 包
【发布时间】:2016-01-18 15:24:26
【问题描述】:

我的 repo 中包含一个本地 npm 包(由于其超过 200mb 的大小,我没有将整个 node_modules 包含到我的 repo 中,只有我必须修改以满足我的需要的特定包)。

package.json 中,本地包声明如下所示:

dependencies : { 
  local_package: "./my_local_package"
  ...
}

我遇到的错误

 npm ERR! enoent ENOENT: no such file or directory, open 
 '/app/tmp/cache/my_local_package'

我不确定/app/tmp/cache 是否是我的仓库所在的地方,如果不是我应该更改它。

节点 v4.2.1,npm v2.14.7

【问题讨论】:

  • 在推送到heroku之前,你为什么不输入包名?你可以将它保存在 git 中,使用相对本地目录,但是对于 heroku,你可以更改和部署它
  • 本地依赖项当然包含在 git repo 中(否则,我不希望它起作用)。从 npm 2.0 开始支持在 package.json 中指定本地依赖项的这一功能,而在部署到 heroku 时它似乎不起作用的事实正是我问这个问题的确切原因:)。
  • 您是否尝试禁用缓存? heroku config:set NODE_MODULES_CACHE=false 。能否提供完整的部署日志?
  • 试过没有帮助。

标签: node.js heroku npm


【解决方案1】:

根据npm documentation for local paths,你应该这样定义:

"dependencies" : { 
  "local_package": "file:./my_local_package"
  ...
}

【讨论】:

  • 感谢您指出这一点。尽管它没有修复错误,但阅读文档非常有帮助。我仍然不知道为什么这一步是必要的,但是当我将 npm i ./local_package --save 添加到我的部署脚本时,它从本地目录安装了该包。
【解决方案2】:

不建议将node_modules添加到git或将其推送到heroku。

因此,一种可能的解决方案是将您的 local_package 放在单独的 git 存储库中,然后您可以对您的 package.json 执行以下操作。

dependencies : { local_package: "git+https://example.com/local_package.git" ... }

我觉得这比在您的 node_modules 中只包含一个 local_package 而忽略所有其他内容更好。

【讨论】:

    猜你喜欢
    • 2019-02-07
    • 2016-01-17
    • 2018-07-05
    • 1970-01-01
    • 2021-12-14
    • 2012-04-22
    • 2019-07-03
    • 2017-10-25
    • 2018-05-02
    相关资源
    最近更新 更多