Fly.io部署Node.js应用时出现Cannot find module 'express'错误求助
解决Fly.io部署Node.js应用时的"Cannot find module 'express'"错误
问题分析
部署时出现MODULE_NOT_FOUND错误,说明构建过程中未正确安装express依赖,或依赖未被纳入最终运行环境。结合你使用Paketo Node.js buildpack的配置,以下是具体修复方案:
修复步骤
1. 确认express在生产依赖中
打开package.json,确保express位于dependencies字段下,而非devDependencies。生产构建流程通常会跳过devDependencies中的包,依赖位置错误会导致运行时找不到模块。
示例正确配置:
{ "dependencies": { "express": "^4.18.2" } }
2. 调整Fly.io构建配置
当前使用的Paketo buildpack配置可能未正确触发完整的依赖安装流程,建议替换为Fly.io官方适配的Node.js buildpack,简化配置:
修改fly.toml的[build]部分:
[build] builder = "flyio/nodejs:18"
官方buildpack会自动处理npm install、环境变量设置和启动脚本检测,无需额外配置BP_NODE_RUN_SCRIPTS。
3. 确保package.json包含启动脚本
在package.json的scripts字段中添加start命令,让Fly.io知晓应用启动方式:
{ "scripts": { "start": "node index.js" } }
4. 验证.gitignore配置
确保.gitignore文件中包含node_modules,避免将本地依赖目录推送到Fly.io。构建过程中buildpack会重新安装依赖,本地node_modules存在可能干扰构建流程:
node_modules/
5. 重新部署应用
完成上述配置后,重新执行部署命令:
fly deploy
内容的提问来源于stack exchange,提问作者Evilink
相关产品推荐
相关产品推荐

