当前位置: 首页 > 面试题库 >

Heroku + Node:找不到模块错误

谭向晨
2023-03-14
问题内容

我的Node应用程序在本地运行良好,但是在部署到Heroku时遇到错误。该应用程序使用Sequelize在一个/models文件夹,其中包含index.jsCompany.jsUsers.js。在本地,我可以使用中的以下代码导入模型/models/index.js

// load models
var models = [
  'Company',
  'User'
];
models.forEach(function(model) {
  module.exports[model] = sequelize.import(__dirname + '/' + model);
});

这很好,但是,当我部署到Heroku时,应用程序崩溃并显示以下错误:

Error: Cannot find module '/app/models/Company'
   at Function.Module._resolveFilename (module.js:338:15)
   at Function.Module._load (module.js:280:25)
   at Module.require (module.js:364:17)
   at require (module.js:380:17)
   at module.exports.Sequelize.import (/app/node_modules/sequelize/lib/sequelize.js:219:24)
   at module.exports.sequelize (/app/models/index.js:60:43)
   at Array.forEach (native)
   at Object.<anonymous> (/app/models/index.js:59:8)
   at Module._compile (module.js:456:26)
   at Object.Module._extensions..js (module.js:474:10)
Process exited with status 8

最初我以为是由于区分大小写(本地mac与heroku linux),但是我移动了文件,进行了git
commit,然后又移回并再次提交,以确保Company.js在git存储库中大写。这不能解决问题,我不确定可能是什么问题。


问题答案:

问题是由于区分大小写和文件命名。Mac OS X不区分大小写(但可以识别),而Heroku基于Linux,并且区分大小写。通过heroku run bash从终端运行,我可以看到该/models文件夹在Heroku的文件系统上的显示方式。解决方案是重命名User.jsCompany.js在本地系统上更改为新的临时文件,将更改提交到git,然后重命名User.jsCompany.js记住大写的首字母,然后再次通过git提交更改。以前,我曾尝试直接从user.jsto
User.js和to重命名文件company.jsCompany.js但是git commit和区分大小写的文件名更改未反映在Heroku上。



 类似资料:
  • 问题内容: 我尝试在Localy节点中要求一些JS文件-效果很好,但在Heroku中却遇到此错误- 错误:找不到模块“ ./routes.js” 我的代码看起来像: 我究竟做错了什么?谢谢! 问题答案: 您可以尝试运行dyno的一次性副本,以使其列出目录内容–这将使您检查文件是否在期望的位置。(Heroku上有更多这方面的信息在这里。)例如: 这将使Heroku创建(非常简短)您的应用程序的其他副

  • config:macOS High Sierra,version 10.13.2,node:v8.1.2 npm:5.0.3当我在angularjs项目中运行npm start时,我得到以下错误: 在此之后我运行: 现在我得到了这个错误: 为什么npm不安装Node-Sass?如何安装Node-Sass?

  • 问题内容: 运行webpack后出现此错误。Webpack已全局安装,并且我正在运行Node 问题答案: Node需要您将webpack安装到您的项目中。 您可以通过以下两种方法解决上述问题: 删除全局webpack并在本地安装 您可以将全局webpack pkg链接到项目的节点模块。这样做的缺点是您的项目将被迫使用最新的Webpack。仅当某些更新不向后兼容时,这才会产生问题。 您可以根据需要省

  • 问题内容: 配置:macOS High Sierra,版本10.13.2,节点:v8.1.2 npm:5.0.3在我的angularjs项目中运行npm start时,出现以下错误: 之后,我运行: 现在我得到这个错误: 为什么npm不安装node-sass?如何安装node-sass? 问题答案: 解决方法如下: 请享用!

  • 问题内容: 我正在尝试在Mac OSX Lion上设置Node。一切似乎都正常,但是我似乎无法从全局模块文件夹中导入任何模块。我得到了错误 如果我运行this :,得到的响应是: 没错,我的模块确实安装在/ usr / local / lib / node_modules中。但是,当我尝试运行脚本时,却得到以下信息: 我的.bash_profile看起来像这样: 非常感谢您的帮助,我不知道为什么不

  • 问题内容: 我已经很长时间没有使用Node.js了,也从未使用过express。当我启动应用程序时,它刚刚返回: 启动test.html时发生错误。这是代码: 我自己的路 : 为什么呢 编辑: 这是我的新app.configure: 但它返回: 问题答案: 我假设test.html是一个静态文件。要渲染静态文件,请像这样使用静态中间件。 这告诉express在应用程序的公共目录中查找静态文件。 指