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?