Saya mencoba untuk menyebarkan aplikasi Node.js saya ke Heroku dengan menghubungkan Heroku ke repositori Github saya dan menggunakan cabang master.

Saya telah mencoba sejumlah pendekatan berbeda untuk menyebarkan aplikasi saya tetapi semuanya mengembalikan kesalahan yang sama.

Log build yang tepat dapat ditemukan di bawah ini:

-----> Node.js app detected

-----> Creating runtime environment

   NPM_CONFIG_LOGLEVEL=error
   NODE_ENV=production
   NODE_MODULES_CACHE=true
   NODE_VERBOSE=false

-----> Installing binaries
       engines.node (package.json):  12.16.1
       engines.npm (package.json):   6.13.4
       engines.yarn (package.json):  1.19.1

   Resolving node version 12.16.1...
   Downloading and installing node 12.16.1...
   npm 6.13.4 already installed with node
   Resolving yarn version 1.19.1...
   Downloading and installing yarn (1.19.1)...
   Installed yarn 1.19.1

-----> Installing dependencies
       Installing node modules (yarn.lock)
       yarn install v1.19.1
       warning package.json: No license field
       warning No license field
       [1/4] Resolving packages...
       [2/4] Fetching packages...
       [3/4] Linking dependencies...
       [4/4] Building fresh packages...
       error /tmp/build_6239d6c68cba3cabeb950e607f13b16d/node_modules/node-base64: Command failed.
       Exit code: 127
       Command: ./install.sh
       Arguments: 
       Directory: /tmp/build_6239d6c68cba3cabeb950e607f13b16d/node_modules/node-base64
       Output:
       ./install.sh: 3: ./install.sh: node-waf: not found
       info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
-----> Build failed

   We're sorry this build is failing! You can troubleshoot common issues here:
   https://devcenter.heroku.com/articles/troubleshooting-node-deploys

   If you're stuck, please submit a ticket so we can help:
   https://help.heroku.com/

   Love,
   Heroku

 !     Push rejected, failed to compile Node.js app.
 !     Push failed

File package.json saya dapat ditemukan di bawah:

{
  "engines": {
    "node": "12.16.1",
    "npm": "6.13.4",
    "yarn": "1.19.1"
  },
  "scripts": {
    "start": "tsc && node dist/app.js"
  },
  "dependencies": {
    "bcryptjs": "^2.4.3",
    "body-parser": "^1.19.0",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "express-validator": "^6.4.0",
    "jsonwebtoken": "^8.5.1",
    "jwt": "^0.2.0",
    "mongoose": "^5.7.11",
    "passport": "^0.4.0",
    "passport-jwt": "^4.0.0",
    "passport-local": "^1.0.0",
    "typescript": "^3.8.3"
  },
  "devDependencies": {
    "@types/bcryptjs": "^2.4.2",
    "@types/cors": "^2.8.6",
    "@types/express": "^4.17.2",
    "@types/jsonwebtoken": "^8.3.5",
    "@types/mongoose": "^5.5.32",
    "@types/passport-jwt": "^3.0.3",
    "@types/passport-local": "^1.0.33",
    "prettier": "1.19.1",
    "tslint": "^5.20.1"
  }
}
  • Saya telah mencoba menambahkan versi mesin yang tepat ke package.json.
  • Saya telah mencoba menghapus yarn.lock.
  • Saya telah mencoba menginstal TypeScript sebagai ketergantungan, bukan sebagai paket global.
  • Saya tidak tahu bagaimana saya bisa menginstal ketergantungan node-base64/node-waf secara manual.

Terima kasih atas semua solusi potensial Anda.

0
user13273817 10 April 2020, 01:17

1 menjawab

Jawaban Terbaik

TL; DR. Hapus jwt dan gunakan jsonwebtoken.

Detail: jwt memiliki node-base64 sebagai dependensi. Baik jwt maupun node-base64 tidak lagi dipertahankan. Di bawah tenda, node-base64 menggunakan node-waf yang sudah usang. Jadi, loop panggilan ke paket usang ini mengakibatkan kegagalan yang Anda temui. Mengganti jwt dengan jsonwebtoken akan menyelesaikan masalah ini.

Mungkin juga mengalami masalah dengan node-waf tanpa menggunakan jwt. Lihat pertanyaan Stackoverflow Node-waf: not found untuk membantu Anda dalam hal itu.

0
Obinna Nnenanya 24 Mei 2020, 02:45