【问题标题】:nodejs on heroku commiting node_modules file path too longheroku上的nodejs提交node_modules文件路径太长
【发布时间】:2014-10-22 06:25:57
【问题描述】:

我是 nodejs 和 heroku 的新手,我正在尝试部署我的第一个应用程序。

阅读了这篇Should I check in node_modules to git when creating a node.js app on Heroku? 的帖子后,似乎最好的做法是提交 node_modules 文件夹。

我的问题是我无法提交一些 node_modules,因为文件路径似乎太长,git 无法管理。有没有其他人有这个问题?我使用 SourceTree 作为我的 Git GUI 并运行 Windows 7。

我在 sourcetree 中得到的错误是:

git -c diff.mnemonicprefix=false -c core.quotepath=false rm -q -f -- node_modules/gulp-concat/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.escape/node_modules/lodash._escapehtmlchar/node_modules/lodash._htmlescapes/index.js

fatal: pathspec 'node_modules/gulp-concat/node_modules/gulp-util/node_modules/lodash.template/node_modules/lodash.escape/node_modules/lodash._escapehtmlchar/node_modules/lodash._htmlescapes/index.js' did not match any files

谢谢

【问题讨论】:

  • 因此,为了尝试解决路径问题,我将整个 repo 进一步向上移动到根目录,我重新安装了我的模块,然后提交了一个全新的应用程序。提交似乎工作正常,一切都被推送到网上。但是,当我启动我的应用程序时,我得到“错误:找不到模块'Lodash._basebind”。
  • 所以现在我正在检查并手动添加它说找不到的每个模块,每次我安装并提交一个新模块时,它都会说它找不到不同的模块。非常非常困惑。

标签: node.js git heroku atlassian-sourcetree


【解决方案1】:

与帖子相反,我建议不要将 node_modules 提交到存储库中。

原因:

  1. 不同的平台可能会以不同的方式构建模块。可以在 Windows 上开发并推送到 Linux 服务器。

  2. 您可能在本地计算机上全局安装了一些模块。在这种情况下,它们不会安装在节点模块中。

  3. 有些模块只在开发过程中使用,而不是在生产中使用。

如果您担心 Heroku 的部署速度,请不要担心。 Heroku 缓存您使用的所有模块并仅更新更改。

无论哪种方式,您得到的错误都不是因为文件名长。要么是因为您尝试对未跟踪的文件进行一些操作。或者在不再存在的跟踪文件上。

【讨论】:

  • 谢谢您的回复。关于 node_modules 的提交,我发现在提交它们之前,我遇到了错误,提示找不到模块。我应该做些什么来让heroku加载所有依赖项?其次,关于 Git 错误,我认为它找不到文件,因为路径太长。该文件肯定在那里,当我尝试直接从命令行提交它时,我得到一个路径长度错误。
  • 也许不是所有的模块都在 package.json 中
  • 是的,可能是这样,但似乎都是对具有内部依赖关系的模块的所有引用,即 lodash 等。
猜你喜欢
  • 2016-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-16
  • 2016-02-29
  • 2016-08-27
  • 1970-01-01
  • 2011-11-02
相关资源
最近更新 更多