web-dev-qa-db-ja.com

ElasticBeanstalkへのNestJのデプロイ

NestJSアプリをデプロイする方法を示すリソースの不足に私はかなり驚いています。私はこれを成し遂げるのに苦労しています(これを解決したら、おそらく標準的なユースケースのチュートリアルを提供するだけの記事を書くでしょう)。

私は、(CLIを使用して)aw Elastic Beanstalkでホストしたい小さな標準のNestJS MVCアプリを持っています。

サーバーの起動ログが表示されず、代わりにログが表示されます:

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! [email protected] 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 [email protected] 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開発依存関係がインストールされていないため、問題が発生する可能性があると思いますが、これを解決する方法がわかりません

これまでに行ったこと:

デフォルトを上書きするためにProcfileを作成Node Command(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)
4
Xen_mar

きみの main.ts 元気そう! nodeコマンドの場合、その設定を コンテナオプション beanstalk設定画面で。

NestJSのスターターにはデフォルトの動作があります tsconfig.json、TypeScriptがインストールされている端末でtscを実行します。 tscを実行すると、すべてのTypeScriptファイルがdistフォルダーに構築されます。アプリケーションのエントリポイントはオンになります dist/src/main.js

TypeScript以外のすべての構成ファイルもコピーする必要があります。 package.json、distフォルダーに。

1
Waleed

ノードアプリでノードプラットフォームごとに実行されるデフォルトのコマンドはnpm startです-ネストアプリの場合はnest startです。 nestコマンドはnest cliの一部です-デフォルトでは使用できません。簡単な解決策は、devの依存関係をpackage.jsonのメインの依存関係ブロックにコピーすることです。これにより、nest cliがインストールされ、アプリが.jsにコンパイルされ、nest startが期待どおりに機能するようになります。

@nestjs/cli, @nestjs/schematics,tsconfig-paths , TypeScript, @types/express , @types/node, ts-node

0
xan_z