node.js - نشر Loopback 4 في هيروكو، خطأ lb-tsc غير موجود


أحاول نشر تطبيق LoopBack 4 على Heroku. لكن بعد النشر، أمر npm-start لا يعمل في وحدة تحكم Heroku. يظهر الخطأ 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

إنشاء Procfile في جذر المشروع يحتوي على web: node . أصلح هذا بالنسبة لي. بدونه، سيعتمد Heroku على بدء التطبيق عن طريق استدعاء npm run والذي يحاول تشغيل عملية البناء، وبما أن @loopback/build تم إعدادها كاعتماد تطويري بشكل افتراضي، فهذا يؤدي إلى حدوث خطأ lb-tsc not found.

الإجابة رقم 2

عندما تقوم heroku بتشغيل تطبيق node، تكون قيمة process.env.NODE_ENV هي "production" يمكنك التحقق من ذلك من خلال محطة heroku bash بكتابة node ثم process.env وهذا يعني أن تبعيات التطوير لا يتم حلها.

الخطوات أدناه تعمل بشكل جيد بالنسبة لي

  1. افتح ملف package.json وانسخ كل شيء من قسم dev dependency والصقه في قسم dependency في ملف package.json
  2. git add . ثم git commit ثم git push heroku master

حل آخر: بعد دفع الملفات إلى هيروكو باستخدام git push heroku master، انتقل إلى طرفية هيروكو من https://dashboard.heroku.com/ وابدأ وحدة التحكم ثم نفذ الأمر node dist/index.js، فهذا الأمر سيشغّل تطبيق loopBack، تأكد من أن مجلد dist متوفر.