ウェブサイト検索

node.js - HerokuでのLoopback 4デプロイ、lb-tscが見つからないエラー


ループバック4アプリをHerokuにデプロイしようとしています。しかし、公開後、Herokuコンソールでnpm startコマンドが動作しません。sh: 1: lb-tsc が見つからないというエラーが出ています。package.jsonは以下の通りです

"devDependencies": {
"@loopback/build": "^3.0.0",
"@loopback/eslint-config": "^5.0.0",
"@loopback/testlab": "^1.10.0",
"@types/node": "^10.17.6",
"@typescript-eslint/eslint-plugin": "^2.10.0",
"@typescript-eslint/parser": "^2.10.0",
"eslint": "^6.7.2",
"eslint-config-prettier": "^6.7.0",
"eslint-plugin-eslint-plugin": "^2.1.0",
"eslint-plugin-mocha": "^6.2.2",
"source-map-support": "^0.5.16",
"typescript": "~3.7.3"},
"scripts": {
    "build": "lb-tsc",
    "build:watch": "lb-tsc --watch",
    "clean": "lb-clean dist *.tsbuildinfo",
     .......
    "lb-tsc": "lb-tsc",
    "postinstall": "npm run lb-tsc"
  }

回答 #1

プロジェクトのルートに web: node . を含む Procfile を作成することで、これが解決しました。これがない場合、Heroku はデフォルトで npm run を呼び出してアプリを起動しようとし、ビルドプロセスを実行しようとします。そして、@loopback/build がデフォルトで開発依存として設定されているため、lb-tsc not found エラーが発生します。

回答 #2

heroku がノードアプリケーションを実行するとき、process.env.NODE_ENV の値は "production" になります。これは heroku のターミナル bash から node と入力し、その後 process.env を確認することで確認できます。これは、開発用依存関係(dev dependencies)が解決されないことを意味します。

以下の手順は私にはうまくいきます

  1. package.json ファイルを開き、devDependency セクションのすべてをコピーして、package.json の dependency セクションに貼り付けます
  2. git add . それから git commit をして、そして git push heroku master

別の解決策:git push heroku master を使ってファイルを Heroku にプッシュした後、https://dashboard.heroku.com/ から Heroku のターミナルにアクセスしてコンソールを開始し、次のコマンドを実行します node dist/index.js。このコマンドは LoopBack アプリケーションを起動します。dist フォルダーが存在することを確認してください。

関連記事