Развертывание Heroku приложения Node возвращает узел-waf: не найдено - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь развернуть свое приложение Node.js в Heroku, подключив Heroku к моему репозиторию Github и развернув главную ветвь.

Я пробовал несколько разных подходов для развертывания моего приложения, но все они вернуть ту же ошибку.

Точный журнал сборки можно найти ниже:

-----> 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

Мой package.json файл можно найти ниже:

{
  "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"
  }
}
  • Я попытался добавить точные версии движка в пакет. json.
  • Я попытался удалить yarn.lock.
  • Я попытался установить typcript в качестве зависимости, а не в качестве глобального пакета .
  • Я не знаю, как вручную установить зависимость node-base64 / node-waf.

Спасибо за все ваши потенциальные решения.

1 Ответ

0 голосов
/ 10 апреля 2020

TL; DR. Удалите jwt и используйте jsonwebtoken.

Подробности: jwt имеет node-base64 в качестве зависимости. Jwt и node-base64 больше не поддерживаются. Под капотом node-base64 используется node-waf, который уже устарел. Таким образом, эти l oop вызовов устаревших пакетов привели к ошибке, с которой вы столкнулись. Замена jwt на jsonwebtoken решит эту проблему.

Проблемы с node-waf могут возникнуть без использования jwt. Посмотрите этот вопрос Stackoverflow Node-waf: not found , чтобы помочь вам с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...