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)
きみの main.ts 元気そう! nodeコマンドの場合、その設定を コンテナオプション beanstalk設定画面で。
NestJSのスターターにはデフォルトの動作があります tsconfig.json、TypeScriptがインストールされている端末でtsc
を実行します。 tsc
を実行すると、すべてのTypeScriptファイルがdistフォルダーに構築されます。アプリケーションのエントリポイントはオンになります dist/src/main.js。
TypeScript以外のすべての構成ファイルもコピーする必要があります。 package.json、distフォルダーに。
ノードアプリでノードプラットフォームごとに実行されるデフォルトのコマンドは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