Node.js项目中index.js能否为空?Heroku部署遇MODULE_NOT_FOUND错误
Heroku部署Node项目报错排查与解决
问题背景
正在进行学校项目的登录页面测试,使用Heroku部署时持续出现模块找不到的错误,怀疑和index.js有关。
Procfile配置
web: node src/[app name].js
注:[app name]为隐私替换后的实际应用名称。
报错信息
2022-10-22T17:19:11.562569+00:00 app[web.1]: Error: Cannot find module '/app/src/[app name].js' 2022-10-22T17:19:11.562570+00:00 app[web.1]: at Function.Module._resolveFilename (node:internal/modules/cjs/loader:985:15) 2022-10-22T17:19:11.562570+00:00 app[web.1]: at Function.Module._load (node:internal/modules/cjs/loader:833:27) 2022-10-22T17:19:11.562570+00:00 app[web.1]: at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) 2022-10-22T17:19:11.562571+00:00 app[web.1]: at node:internal/main/run_main_module:22:47 { 2022-10-22T17:19:11.562571+00:00 app[web.1]: code: 'MODULE_NOT_FOUND', 2022-10-22T17:19:11.562571+00:00 app[web.1]: requireStack: [] 2022-10-22T17:19:11.562572+00:00 app[web.1]: }
文件夹结构
项目根目录下包含src文件夹,src内部有index.js、login.html、package.json等核心文件。
解决步骤
- 修正Procfile路径
报错明确显示找不到/app/src/[app name].js,但实际入口文件是src/index.js,直接修改Procfile为:
web: node src/index.js
- 配置package.json启动脚本
在package.json中添加start脚本,符合Node项目规范同时避免路径错误:
"scripts": { "start": "node src/index.js" }
此时Procfile可简化为:
web: npm start
检查文件名大小写
Heroku运行在Linux环境下,文件名严格区分大小写,确认本地和Git仓库中的index.js文件名大小写一致,避免出现Index.js这类错误写法。排查.gitignore配置
确保src文件夹未被加入.gitignore文件,否则部署时该文件夹不会上传到Heroku服务器,导致入口文件无法被找到。
内容的提问来源于stack exchange,提问作者joey
相关产品推荐
相关产品推荐

