#heroku #npm #web-deployment #yarnpkg
#heroku #npm #веб-развертывания #yarnpkg
Вопрос:
Я пытаюсь отправить свой git в Heroku, но в самом конце он выдает ошибку. Я посмотрел на консоль развертывания проекта, поскольку я понимаю, что предупреждения не имеют большого значения для сбоя всего приложения. Когда я прошел через консоль, я заметил, что критическая ошибка
quasar: not found
error Command failed with exit code 127.
Насколько я думаю, что-то не так с пакетом npm или yarn, но на самом деле не знаю, что именно. Я указал в файле json ту же версию node, что и у меня, и ту же версию npm, что у меня на моем компьютере. Я не использую yarn, может ли это быть проблемой?
Вот мой json
{
"name": "portfolio",
"version": "0.0.1",
"description": "A Quasar Framework app",
"productName": "Eldar Tailov",
"author": "'Eldar' <'tailov47@gmail.com'>",
"private": true,
"scripts": {
"build": "quasar build",
"start": "node server.js",
"heroku-postbuild": "yarn amp;amp; yarn build"
},
"dependencies": {
"@quasar/extras": "^1.0.0",
"axios": "^0.20.0",
"connect-history-api-fallback": "^1.6.0",
"core-js": "^3.6.5",
"express": "^4.17.1",
"quasar": "^1.0.0",
"serve-static": "^1.14.1",
"vue2-google-maps": "^0.10.7"
},
"devDependencies": {
"@quasar/app": "^2.0.0",
"babel-eslint": "^10.0.1",
"eslint": "^6.8.0",
"eslint-config-prettier": "^6.9.0",
"eslint-loader": "^3.0.3",
"eslint-plugin-vue": "^6.1.2",
"workbox-webpack-plugin": "^5.1.4"
},
"browserslist": [
"last 10 Chrome versions",
"last 10 Firefox versions",
"last 4 Edge versions",
"last 7 Safari versions",
"last 8 Android versions",
"last 8 ChromeAndroid versions",
"last 8 FirefoxAndroid versions",
"last 10 iOS versions",
"last 5 Opera versions"
],
"engines": {
"node": "~12.18.2",
"npm": "~6.14.5",
"yarn": ">= 1.21.1"
}
}
и вот журнал heroku
-----> 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.18.2
engines.npm (package.json): ~6.14.5
engines.yarn (package.json): >= 1.21.1
Resolving node version ~12.18.2...
Downloading and installing node 12.18.4...
Bootstrapping npm ~6.14.5 (replacing 6.14.6)...
npm ~6.14.5 installed
Resolving yarn version >= 1.21.1...
Downloading and installing yarn (1.22.5)
Installed yarn 1.22.5
-----> Installing dependencies
Installing node modules
> core-js@3.6.5 postinstall /tmp/build_bc8b4d0e_/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"
> fsevents@1.2.13 install /tmp/build_bc8b4d0e_/node_modules/webpack-dev-server/node_modules/fsevents
> node install.js
Skipping 'fsevents' build as platform linux is not supported
> ejs@2.7.4 postinstall /tmp/build_bc8b4d0e_/node_modules/ejs
> node ./postinstall.js
> fsevents@1.2.13 install /tmp/build_bc8b4d0e_/node_modules/watchpack-chokidar2/node_modules/fsevents
> node install.js
Skipping 'fsevents' build as platform linux is not supported
> node-sass@4.14.1 install /tmp/build_bc8b4d0e_/node_modules/node-sass
> node scripts/install.js
Downloading binary from https://github.com/sass/node-sass/releases/download/v4.14.1/linux-x64-72_binding.node
Download complete
Binary saved to /tmp/build_bc8b4d0e_/node_modules/node-sass/vendor/linux-x64-72/binding.node
Caching binary to /tmp/npmcache.XZGoT/_cacache/node-sass/4.14.1/linux-x64-72_binding.node
> node-sass@4.14.1 postinstall /tmp/build_bc8b4d0e_/node_modules/node-sass
> node scripts/build.js
Binary found at /tmp/build_bc8b4d0e_/node_modules/node-sass/vendor/linux-x64-72/binding.node
Testing binary
Binary is fine
> core-js@2.6.11 postinstall /tmp/build_bc8b4d0e_/node_modules/babel-runtime/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"
added 1590 packages in 23.801s
-----> Build
Detected both "build" and "heroku-postbuild" scripts
Running heroku-postbuild
> portfolio@0.0.1 heroku-postbuild /tmp/build_bc8b4d0e_
> yarn amp;amp; yarn build
yarn install v1.22.5
info No lockfile found.
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
[1/5] Validating package.json...
[2/5] Resolving packages...
warning vue2-google-maps > babel-runtime > core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
warning @quasar/app > webpack-dev-server > chokidar@2.1.8: Chokidar 2 will break on node v14 . Upgrade to chokidar 3 with 15x less dependencies.
warning @quasar/app > webpack-dev-server > chokidar > fsevents@1.2.13: fsevents 1 will break on node v14 and could be using insecure binaries. Upgrade to fsevents 2.
warning @quasar/app > node-sass > request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
warning @quasar/app > node-sass > node-gyp > request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
warning @quasar/app > node-sass > request > har-validator@5.1.5: this library is no longer supported
warning @quasar/app > webpack > watchpack > watchpack-chokidar2 > chokidar@2.1.8: Chokidar 2 will break on node v14 . Upgrade to chokidar 3 with 15x less dependencies.
warning @quasar/app > stylus > css-parse > css > urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
warning @quasar/app > webpack-dev-server > chokidar > braces > snapdragon > source-map-resolve > urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
warning @quasar/app > webpack-dev-server > chokidar > braces > snapdragon > source-map-resolve > resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
warning eslint-loader@3.0.4: This loader has been deprecated. Please use eslint-webpack-plugin
warning workbox-webpack-plugin > workbox-build > rollup-plugin-babel@4.4.0: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-babel.
warning workbox-webpack-plugin > workbox-build > @hapi/joi@15.1.1: joi is leaving the @hapi organization and moving back to 'joi' (https://github.com/sideway/joi/issues/2411)
warning workbox-webpack-plugin > workbox-build > @hapi/joi > @hapi/address@2.1.4: This version has been deprecated and is no longer supported or maintained
warning workbox-webpack-plugin > workbox-build > @hapi/joi > @hapi/bourne@1.3.2: This version has been deprecated and is no longer supported or maintained
warning workbox-webpack-plugin > workbox-build > @hapi/joi > @hapi/topo@3.1.6: This version has been deprecated and is no longer supported or maintained
warning workbox-webpack-plugin > workbox-build > @hapi/joi > @hapi/hoek@8.5.1: This version has been deprecated and is no longer supported or maintained
warning workbox-webpack-plugin > workbox-build > @hapi/joi > @hapi/topo > @hapi/hoek@8.5.1: This version has been deprecated and is no longer supported or maintained
[3/5] Fetching packages...
info fsevents@2.1.3: The platform "linux" is incompatible with this module.
info "fsevents@2.1.3" is an optional dependency and failed compatibility check. Excluding it from installation.
info fsevents@1.2.13: The platform "linux" is incompatible with this module.
info "fsevents@1.2.13" is an optional dependency and failed compatibility check. Excluding it from installation.
[4/5] Linking dependencies...
warning " > eslint-loader@3.0.4" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
warning " > workbox-webpack-plugin@5.1.4" has unmet peer dependency "webpack@^4.0.0".
[5/5] Building fresh packages...
success Saved lockfile.
Done in 45.19s.
yarn run v1.22.5
$ quasar build
/bin/sh: 1: quasar: not found
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT
npm ERR! portfolio@0.0.1 heroku-postbuild: `yarn amp;amp; yarn build`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the portfolio@0.0.1 heroku-postbuild script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /tmp/npmcache.XZGoT/_logs/2020-09-28T01_01_55_709Z-debug.log
-----> 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
Ответ №1:
Я столкнулся с точно такой же проблемой, как и вы. Я смог исправить это из предложений по этой ссылке . Я думаю, это потому @quasar/app
, что он был указан в зависимостях разработчиков.
https://devcenter.heroku.com/articles/nodejs-support#heroku-specific-build-steps
В принципе, я обновил часть движка package.json
, чтобы соответствовать моей локальной среде
"engines": {
"node": ">= 12.18.3",
"npm": ">= 6.14.11",
"yarn": ">= 1.22.5"
}
а затем установите для переменной YARN_PRODUCTION env в heroku значение false
heroku config:set YARN_PRODUCTION=false
Я надеюсь, что вы найдете это полезным (PS, конечно, не устанавливайте статическое значение в части двигателя, вместо этого используйте подстановочный знак)
Ответ №2:
Quasar, вероятно, не установлен глобально на heroku,
попробуйте запустить его с помощью npx:
"scripts": {
...
"build": "npx quasar build -m ssr",
"start": "cd dist/ssr; npm i; npm start"
}
Комментарии:
1. Вы правы в том, что Quasar не установлен глобально. Что сработало для меня, так это … во-первых, ваш метод использования npx для его установки, и поскольку я использую express в качестве своего сервера, мне также пришлось использовать
"start": "node server.js"