NodeJS 将NestJs部署到ElasticBeanstalk

i2loujxw  于 2023-04-29  发布在  Node.js
关注(0)|答案(5)|浏览(138)

我对缺乏展示如何部署NestJS应用程序的资源感到非常惊讶。我很难做到这一点(解决了这个问题后,我可能会写一篇文章,为标准用例提供教程)。
我有一个小型的标准NestJS MVC应用程序,我想在AWS Elastic Beanstalk上托管(使用CLI)。

我没有看到服务器启动的日志,而是日志显示:

May 12 11:01:01 ip-172-31-31-53 web: Error: Cannot find module '/var/app/current/dist/main'
May 12 11:01:01 ip-172-31-31-53 web: at Function.Module._resolveFilename (internal/modules/cjs/loader.js:980:15)
May 12 11:01:01 ip-172-31-31-53 web: at Function.Module._load (internal/modules/cjs/loader.js:862:27)
May 12 11:01:01 ip-172-31-31-53 web: at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
May 12 11:01:01 ip-172-31-31-53 web: at internal/main/run_main_module.js:18:47 {
May 12 11:01:01 ip-172-31-31-53 web: code: 'MODULE_NOT_FOUND',
May 12 11:01:01 ip-172-31-31-53 web: requireStack: []
May 12 11:01:01 ip-172-31-31-53 web: }
May 12 11:01:01 ip-172-31-31-53 web: npm ERR! code ELIFECYCLE
May 12 11:01:01 ip-172-31-31-53 web: npm ERR! errno 1
May 12 11:01:01 ip-172-31-31-53 web: npm ERR! hr-tool@0.0.1 start:prod: `node dist/main`
May 12 11:01:01 ip-172-31-31-53 web: npm ERR! Exit status 1
May 12 11:01:01 ip-172-31-31-53 web: npm ERR!
May 12 11:01:01 ip-172-31-31-53 web: npm ERR! Failed at the hr-tool@0.0.1 start:prod script.
May 12 11:01:01 ip-172-31-31-53 web: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
May 12 11:01:01 ip-172-31-31-53 web: npm ERR! A complete log of this run can be found in:
May 12 11:01:01 ip-172-31-31-53 web: npm ERR!     /home/webapp/.npm/_logs/2020-05-12T11_01_01_151Z-debug.log

我怀疑这个问题可能是因为生产服务器上没有安装一些TypeScript dev-dependencies,但我真的不知道如何解决这个问题

到目前为止我所做的:

创建Procfile覆盖默认节点命令(Procfile):

web: npm run start:prod

更改了我的应用程序的端口(main。ts)

await app.listen(process.env.PORT || 3000);
  console.log('server start on PORT' + process.env.PORT)
  console.log(process.env.EMAIL_USER)
crcmnpdw

crcmnpdw1#

要将Nest JS应用程序部署到Elasticbeanstalk(EBS),只需3个步骤:
1.修改你的package.json文件并添加“deploy”脚本,如下所示:

{
  ...
  "scripts": {
   ...
   "deploy": "npm ci && npm run build && npm run start:prod"
  }
}

您需要安装所有(包括dev)依赖项才能构建和运行Nest应用程序。
1.在源的根目录中创建文件Procfile,其中包含

web: npm run deploy

1.提交到GIT,推送到repo,并执行eb deploy
好好享受吧

t1qtbnec

t1qtbnec2#

你的主。ts看起来很好!对于node命令,您可以在beanstalk配置屏幕中将其设置从Container Options更改。
NestJS的starter有一个默认的工作
tsconfig。json**,在安装TypeScript的终端上运行tsc。运行tsc将把所有的typescript文件构建到dist文件夹中。应用程序入口点将位于dist/src/main。js
您还需要复制所有非typescript配置文件,包括包。json,到dist文件夹。

sd2nnvve

sd2nnvve3#

按节点平台为节点应用程序运行的默认命令是npm start-nest应用程序的默认命令是nest start。nest命令是nest cli的一部分-默认情况下不可用。一个简单的解决方案是将下面的dev依赖项复制到包中的主依赖项块。json这将确保安装nest cli-应用程序编译为。js -和nest start按预期工作。
@nestjs/cli, @nestjs/schematics,tsconfig-paths , typescript, @types/express , @types/node, ts-node

dzjeubhm

dzjeubhm4#

我在将nestjs应用程序部署到AWS弹性beanstalk上时遇到了一段时间的问题,我一步一步地编写了部署指南,用于部署简单的应用程序。
this帮助!

w51jfk4q

w51jfk4q5#

如果使用CI/CD,请确保将所需的所有文件添加到buildspec.yml中的artifact/files部分

相关问题