AWS Elastic beanstalk 导入模块失败
AWS Elastic beanstalk failed to import modules
我正在尝试使用 Elastic beanstalk 将我的 nodejs API 部署到 AWS,但一直收到 502 Bad Gate way,在获取日志后我发现我已经能够加载导入的文件和模块。这是日志中的峰值
/var/log/web.stdout.log
----------------------------------------
Jan 26 22:58:01 ip-172-31-88-38 web: > marketeers-backend@1.0.0 start /var/app/current
Jan 26 22:58:01 ip-172-31-88-38 web: > node server.js
Jan 26 22:58:01 ip-172-31-88-38 web: internal/process/esm_loader.js:74
Jan 26 22:58:01 ip-172-31-88-38 web: internalBinding('errors').triggerUncaughtException(
Jan 26 22:58:01 ip-172-31-88-38 web: ^
Jan 26 22:58:01 ip-172-31-88-38 web: Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/var/app/current/src/Models/Admin.js' imported from /var/app/current/src/controllers/AdminController.js
Jan 26 22:58:01 ip-172-31-88-38 web: at new NodeError (internal/errors.js:322:7)
Jan 26 22:58:01 ip-172-31-88-38 web: at finalizeResolution (internal/modules/esm/resolve.js:308:11)
Jan 26 22:58:01 ip-172-31-88-38 web: at moduleResolve (internal/modules/esm/resolve.js:731:10)
Jan 26 22:58:01 ip-172-31-88-38 web: at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:842:11)
Jan 26 22:58:01 ip-172-31-88-38 web: at Loader.resolve (internal/modules/esm/loader.js:89:40)
Jan 26 22:58:01 ip-172-31-88-38 web: at Loader.getModuleJob (internal/modules/esm/loader.js:242:28)
Jan 26 22:58:01 ip-172-31-88-38 web: at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:76:40)
Jan 26 22:58:01 ip-172-31-88-38 web: at link (internal/modules/esm/module_job.js:75:36) {
Jan 26 22:58:01 ip-172-31-88-38 web: code: 'ERR_MODULE_NOT_FOUND'
Jan 26 22:58:01 ip-172-31-88-38 web: }
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR! code ELIFECYCLE
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR! errno 1
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR! marketeers-backend@1.0.0 start: `node server.js`
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR! Exit status 1
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR!
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR! Failed at the marketeers-backend@1.0.0 start script.
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR! A complete log of this run can be found in:
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR! /home/webapp/.npm/_logs/2022-01-26T22_58_01_636Z-debug.log
Jan 26 22:58:02 ip-172-31-88-38 web: > marketeers-backend@1.0.0 start /var/app/current
Jan 26 22:58:02 ip-172-31-88-38 web: > node server.js
Jan 26 22:58:02 ip-172-31-88-38 web: internal/process/esm_loader.js:74
Jan 26 22:58:02 ip-172-31-88-38 web: internalBinding('errors').triggerUncaughtException(
Jan 26 22:58:02 ip-172-31-88-38 web: ^
Jan 26 22:58:02 ip-172-31-88-38 web: Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/var/app/current/src/Models/Admin.js' imported from /var/app/current/src/controllers/AdminController.js
然而 API 在本地开发环境中工作得很好。关于导致此问题的原因的任何线索。
看来问题是打错了。我正在使用 Windows 进行路径大小写不敏感的本地开发。但是生产环境是 Linux,这是区分大小写的,这是导致问题的原因,因为我试图从 Models
目录导入模块,该目录被命名为 models
我正在尝试使用 Elastic beanstalk 将我的 nodejs API 部署到 AWS,但一直收到 502 Bad Gate way,在获取日志后我发现我已经能够加载导入的文件和模块。这是日志中的峰值
/var/log/web.stdout.log
----------------------------------------
Jan 26 22:58:01 ip-172-31-88-38 web: > marketeers-backend@1.0.0 start /var/app/current
Jan 26 22:58:01 ip-172-31-88-38 web: > node server.js
Jan 26 22:58:01 ip-172-31-88-38 web: internal/process/esm_loader.js:74
Jan 26 22:58:01 ip-172-31-88-38 web: internalBinding('errors').triggerUncaughtException(
Jan 26 22:58:01 ip-172-31-88-38 web: ^
Jan 26 22:58:01 ip-172-31-88-38 web: Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/var/app/current/src/Models/Admin.js' imported from /var/app/current/src/controllers/AdminController.js
Jan 26 22:58:01 ip-172-31-88-38 web: at new NodeError (internal/errors.js:322:7)
Jan 26 22:58:01 ip-172-31-88-38 web: at finalizeResolution (internal/modules/esm/resolve.js:308:11)
Jan 26 22:58:01 ip-172-31-88-38 web: at moduleResolve (internal/modules/esm/resolve.js:731:10)
Jan 26 22:58:01 ip-172-31-88-38 web: at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:842:11)
Jan 26 22:58:01 ip-172-31-88-38 web: at Loader.resolve (internal/modules/esm/loader.js:89:40)
Jan 26 22:58:01 ip-172-31-88-38 web: at Loader.getModuleJob (internal/modules/esm/loader.js:242:28)
Jan 26 22:58:01 ip-172-31-88-38 web: at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:76:40)
Jan 26 22:58:01 ip-172-31-88-38 web: at link (internal/modules/esm/module_job.js:75:36) {
Jan 26 22:58:01 ip-172-31-88-38 web: code: 'ERR_MODULE_NOT_FOUND'
Jan 26 22:58:01 ip-172-31-88-38 web: }
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR! code ELIFECYCLE
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR! errno 1
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR! marketeers-backend@1.0.0 start: `node server.js`
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR! Exit status 1
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR!
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR! Failed at the marketeers-backend@1.0.0 start script.
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR! A complete log of this run can be found in:
Jan 26 22:58:01 ip-172-31-88-38 web: npm ERR! /home/webapp/.npm/_logs/2022-01-26T22_58_01_636Z-debug.log
Jan 26 22:58:02 ip-172-31-88-38 web: > marketeers-backend@1.0.0 start /var/app/current
Jan 26 22:58:02 ip-172-31-88-38 web: > node server.js
Jan 26 22:58:02 ip-172-31-88-38 web: internal/process/esm_loader.js:74
Jan 26 22:58:02 ip-172-31-88-38 web: internalBinding('errors').triggerUncaughtException(
Jan 26 22:58:02 ip-172-31-88-38 web: ^
Jan 26 22:58:02 ip-172-31-88-38 web: Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/var/app/current/src/Models/Admin.js' imported from /var/app/current/src/controllers/AdminController.js
然而 API 在本地开发环境中工作得很好。关于导致此问题的原因的任何线索。
看来问题是打错了。我正在使用 Windows 进行路径大小写不敏感的本地开发。但是生产环境是 Linux,这是区分大小写的,这是导致问题的原因,因为我试图从 Models
目录导入模块,该目录被命名为 models