узел-gyp-сборка не найдена при развертывании приложения web3 в heroku

#node.js #heroku #npm #web3 #node-gyp

Вопрос:

Я пытаюсь развернуть приложение web3 в heroku, но при создании зависимостей npm я получаю следующую ошибку:

 remote: sh: 1: node-gyp-build: not found
remote: npm ERR! code ELIFECYCLE                                                                                                  
remote: npm ERR! syscall spawn                                                                                                    
remote: npm ERR! file sh                                                                                                          
remote: npm ERR! errno ENOENT                                                                                                     
remote: npm ERR! bufferutil@4.0.3 install: `node-gyp-build`                                                                       
remote: npm ERR! spawn ENOENT                                                                                                     
remote: npm ERR!                                                                                                                  
remote: npm ERR! Failed at the bufferutil@4.0.3 install script. 
 

Я считаю, что это из-за web3@1.3.6 зависимость, которую я добавляю. Если я исключу это из зависимостей npm в своем package.json файле, развертывание пройдет успешно.

Если я подключусь по ssh к консоли, я смогу запустить npm install -g web3@1.3.6 , и это также будет успешно. Я также попытался добавить node-gyp, node-gyp-build и bufferutil в качестве явных зависимостей в файле package.json. Я использую

node 14.17.0
npm 6.14.13
python 3.9.5

Ниже приведен мой полный package.json файл

 {
  "engines": {
    "node": "14.17.0",
    "npm": "6.14.13"
  },
  "repository": {},
  "description": " ",
  "license": "MIT",
  "scripts": {
    "deploy": "webpack --mode production",
    "watch": "webpack --mode development --watch"
  },
  "dependencies": {
    "postcss": "8.1.0",
    "@popperjs/core": "^2.9.2",
    "bootstrap": "^5.0.1",
    "jquery": "^3.6.0",
    "phoenix": "file:../deps/phoenix",
    "phoenix_html": "file:../deps/phoenix_html",
    "phoenix_live_view": "file:../deps/phoenix_live_view",
    "topbar": "^0.1.4",
    "@babel/core": "^7.0.0",
    "babel-polyfill": "^6.26.0",
    "@babel/preset-env": "^7.0.0",
    "babel-loader": "^8.0.0",
    "css-loader": "^5.2.6",
    "sass-loader": "^10.0.0",
    "node-sass": "^6.0.0",
    "cropperjs": "1.5.12",
    "eth-sig-util": "^1.4.2",
    "jquery-cropper": "1.0.1",
    "copy-webpack-plugin": "^5.1.1",
    "hard-source-webpack-plugin": "^0.13.1",
    "mini-css-extract-plugin": "^0.9.0",
    "optimize-css-assets-webpack-plugin": "^5.0.1",
    "terser-webpack-plugin": "^2.3.2",
    "webpack": "^4.41.5",
    "webpack-cli": "^3.3.2",
    "web3": "1.3.6"
  },
  "devDependencies": {},
}