我对缺乏展示如何部署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)
5条答案
按热度按时间crcmnpdw1#
要将Nest JS应用程序部署到Elasticbeanstalk(EBS),只需3个步骤:
1.修改你的
package.json
文件并添加“deploy”脚本,如下所示:您需要安装所有(包括dev)依赖项才能构建和运行Nest应用程序。
1.在源的根目录中创建文件
Procfile
,其中包含1.提交到GIT,推送到repo,并执行
eb deploy
好好享受吧
t1qtbnec2#
你的主。ts看起来很好!对于node命令,您可以在beanstalk配置屏幕中将其设置从
Container Options
更改。NestJS的starter有一个默认的工作tsconfig。json**,在安装TypeScript的终端上运行
tsc
。运行tsc
将把所有的typescript文件构建到dist文件夹中。应用程序入口点将位于dist/src/main。js。您还需要复制所有非typescript配置文件,包括包。json,到dist文件夹。
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
dzjeubhm4#
我在将nestjs应用程序部署到AWS弹性beanstalk上时遇到了一段时间的问题,我一步一步地编写了部署指南,用于部署简单的应用程序。
this帮助!
w51jfk4q5#
如果使用CI/CD,请确保将所需的所有文件添加到
buildspec.yml
中的artifact/files
部分