Deploy to Heroku failed. move-file incompatible with node version

萝らか妹 提交于 2020-05-17 07:46:08

问题


I am struggling to deploy a new rails 6 app to heroku. It runs fine on my local. During the deployment process I receive the following output.

Unfortunately, I am new to webpack and yarn. It seems like a version / dependency issue with move-file which in turn seems to be a dependency for webpacker. However, I have no idea how to resolve this.

It seems to come down to this line:

error move-file@2.0.0: The engine "node" is incompatible with this module. Expected version ">=10.17". Got "10.15.3"

However, node is not one of my node-modules but seems to be an installed binary. When I run

node - v

I get: v12.16.1

Any help would be greatly appreciated.

remote:        Removing bundler (2.0.2)
remote:        Bundle completed (201.39s)
remote:        Cleaning up the bundler cache.
remote: -----> Installing node-v10.15.3-linux-x64
remote: -----> Installing yarn-v1.16.0
remote: -----> Detecting rake tasks
remote: -----> Preparing app for Rails asset pipeline
remote:        Running: rake assets:precompile
remote:        yarn install v1.16.0
remote:        [1/4] Resolving packages...
remote:        [2/4] Fetching packages...
remote:        info fsevents@1.2.13: The platform "linux" is incompatible with this module.
remote:        info "fsevents@1.2.13" is an optional dependency and failed compatibility check. Excluding it from installation.
remote:        error move-file@2.0.0: The engine "node" is incompatible with this module. Expected version ">=10.17". Got "10.15.3"
remote:        error Found incompatible module.
remote:        info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
remote: 
remote:  !
remote:  !     Precompiling assets failed.
remote:  !
remote:  !     Push rejected, failed to compile Ruby app.
remote: 
remote:  !     Push failed

If you need any further log or code samples, please let me know. I am at a loss.

===================== update:

I found the documentation about buildpacks and node on heroku: - https://devcenter.heroku.com/articles/nodejs-support

based on that, I changed my package.json file to look like this:

  },
  "version": "0.1.0",
  "engines": {
    "node": "12.16.x"
  },
  "devDependencies": {
    "webpack-dev-server": "^3.10.3"
  }

now, the error message has changed to:

remote:        Running: rake assets:precompile
remote:        yarn install v1.16.0
remote:        [1/5] Validating package.json...
remote:        error jobpro@0.1.0: The engine "node" is incompatible with this module. Expected version "12.16.x". Got "10.15.3"
remote:        error Found incompatible module.
remote:        info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
remote: 
remote:  !
remote:  !     Precompiling assets failed.
remote:  !
remote:  !     Push rejected, failed to compile Ruby app.
remote: 
remote:  !     Push failed

I assumed the update in the package.json file would cause heroku to use the specified node version. However, it doesn't.

The question is: How can I define which node version heroku uses?


回答1:


It took some research to solve this. Heroku can apply multiple build packs per app. In that case, the order matters. I specified to run the nodejs buidlpack first and then the ruby buildpack. Only then will the "engine" definition in the package.json have an effect. If you use the ruby buildpack, the node version defaults to 10.15.3. However, if you execute the nodejs buildpack first, it will install the version specified in the package.json file. https://devcenter.heroku.com/articles/ruby-support#installed-binaries



来源:https://stackoverflow.com/questions/61758641/deploy-to-heroku-failed-move-file-incompatible-with-node-version

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!