You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地正常的Node.js应用部署到Render.com时出现模块找不到错误

Node.js部署到Render后启动失败的解决方案

问题情况

本地运行正常的Node.js代码,部署到Render平台后无法启动,报错找不到./User模块。涉及的两个文件userModel.js和User.js位于同一目录。

错误日志

Mar 14 09:11:24 PM  ==> Starting service with 'npm start'

Mar 14 09:11:27 PM

Mar 14 09:11:27 PM  > login_schedule@1.0.0 start /opt/render/project/src

Mar 14 09:11:27 PM  > cross-env ISDEV=true node ./src/app.js

Mar 14 09:11:27 PM

Mar 14 09:11:33 PM  internal/modules/cjs/loader.js:888

Mar 14 09:11:33 PM    throw err;

Mar 14 09:11:33 PM    ^

Mar 14 09:11:33 PM

Mar 14 09:11:33 PM  Error: Cannot find module './User'

Mar 14 09:11:33 PM  Require stack:

Mar 14 09:11:33 PM  - /opt/render/project/src/src/model/userModel.Js

Mar 14 09:11:33 PM  - /opt/render/project/src/src/controller/registerUserController.js

Mar 14 09:11:33 PM  - /opt/render/project/src/src/router.js

Mar 14 09:11:33 PM  - /opt/render/project/src/src/app.js

Mar 14 09:11:33 PM      at Function.Module._resolveFilename (internal/modules/cjs/loader.js:885:15)

Mar 14 09:11:33 PM      at Function.Module._load (internal/modules/cjs/loader.js:730:27)

Mar 14 09:11:33 PM      at Module.require (internal/modules/cjs/loader.js:957:19)

Mar 14 09:11:33 PM      at require (internal/modules/cjs/helpers.js:88:18)

Mar 14 09:11:33 PM      at Object.<anonymous> (/opt/render/project/src/src/model/userModel.Js:1:14)

Mar 14 09:11:33 PM      at Module._compile (internal/modules/cjs/loader.js:1068:30)

Mar 14 09:11:33 PM      at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)

Mar 14 09:11:33 PM      at Module.load (internal/modules/cjs/loader.js:933:32)

Mar 14 09:11:33 PM      at Function.Module._load (internal/modules/cjs/loader.js:774:14)

Mar 14 09:11:33 PM      at Module.require (internal/modules/cjs/loader.js:957:19) {

Mar 14 09:11:33 PM    code: 'MODULE_NOT_FOUND',

Mar 14 09:11:33 PM    requireStack: [

Mar 14 09:11:33 PM      '/opt/render/project/src/src/model/userModel.Js',

Mar 14 09:11:33 PM      '/opt/render/project/src/src/controller/registerUserController.js',

Mar 14 09:11:33 PM      '/opt/render/project/src/src/router.js',

Mar 14 09:11:33 PM      '/opt/render/project/src/src/app.js'

Mar 14 09:11:33 PM    ]

Mar 14 09:11:33 PM  }

Mar 14 09:11:33 PM  npm ERR! code ELIFECYCLE

Mar 14 09:11:33 PM  npm ERR! errno 1

Mar 14 09:11:33 PM  npm ERR! login_schedule@1.0.0 start: `cross-env ISDEV=true node ./src/app.js`

Mar 14 09:11:33 PM  npm ERR! Exit status 1

Mar 14 09:11:33 PM  npm ERR!

Mar 14 09:11:33 PM  npm ERR! Failed at the login_schedule@1.0.0 start script.

Mar 14 09:11:33 PM  npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

Mar 14 09:11:33 PM

Mar 14 09:11:33 PM  npm ERR! A complete log of this run can be found in:

Mar 14 09:11:33 PM  npm ERR!     /opt/render/.cache/_logs/2023-03-15T00_11_33_673Z-debug.log

问题原因

Render平台使用Linux系统,文件名严格区分大小写;而你的本地环境(如Windows或默认配置的macOS)对文件名大小写不敏感。这导致本地能正常匹配的文件引用,到Linux环境下因大小写不一致找不到模块。

从日志可看出,代码里引用的是./User,但实际部署后的文件存在大小写不匹配情况(比如文件实际是user.js而非User.js,或引用写成./user但文件是User.js)。

解决方案

  • 统一文件名与引用的大小写:确保所有文件的命名和代码中的require引用完全一致,包括字母大小写。
    • 若模型文件名叫User.js,则userModel.js里的引用必须是:
      const User = require('./User')
      
    • 若文件名是user.js,则引用要改成:
      const User = require('./user')
      
  • 排查所有文件的大小写:检查项目中所有文件的命名,避免出现大小写不一致的情况,尤其是跨系统部署时。

代码修正示例

假设模型文件实际是User.js,确保userModel.js的引用正确:

// userModel.js 正确引用
const User = require('./User')

// 其余代码保持不变
const getUserByEmail = async(email) =>{
    try{
        const user = await User.findOne({email})
        return user
    }catch(err){        
        throw new Error("Ocorreu um erro no servidor")
    }
}
// ... 其他函数

内容的提问来源于stack exchange,提问作者Pdtroia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 07:59:55