部署到Heroku失败。与节点版本不兼容的移动文件

问题描述 投票:0回答:1

我正在努力将新的Rails 6应用程序部署到heroku。它在我的本地计算机上运行良好。在部署过程中,我收到以下输出。

[不幸的是,我是webpack和yarn的新手。似乎是移动文件的版本/依赖性问题,而这又似乎是webpacker的依赖性。但是,我不知道该如何解决。

似乎可以归结为这一行:

error [email protected]: The engine "node" is incompatible with this module. Expected version ">=10.17". Got "10.15.3"

但是,节点不是我的节点模块之一,但似乎是已安装的二进制文件。当我运行

node - v

我得到:v12.16.1

任何帮助将不胜感激。

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 [email protected]: The platform "linux" is incompatible with this module.
remote:        info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
remote:        error [email protected]: 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

如果您需要其他日志或代码示例,请告诉我。我很茫然。

=====================更新:

我在heroku上找到了有关buildpacks和node的文档:-https://devcenter.heroku.com/articles/nodejs-support

基于此,我将我的package.json文件更改为如下所示:

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

现在,错误消息已更改为:

remote:        Running: rake assets:precompile
remote:        yarn install v1.16.0
remote:        [1/5] Validating package.json...
remote:        error [email protected]: 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

我假设package.json文件中的更新将导致heroku使用指定的节点版本。但是,事实并非如此。

问题是:如何定义heroku使用哪个节点版本?

node.js heroku yarnpkg ruby-on-rails-6 precompile
1个回答
0
投票

需要一些研究来解决这个问题。Heroku可以为每个应用程序应用多个构建包。在这种情况下,顺序很重要。我指定先运行nodejs buidlpack,然后再运行ruby buildpack。只有这样,package.json中的“ engine”定义才会生效。如果使用ruby buildpack,则节点版本默认为10.15.3。但是,如果首先执行nodejs buildpack,它将安装package.json文件中指定的版本。https://devcenter.heroku.com/articles/ruby-support#installed-binaries

© www.soinside.com 2019 - 2024. All rights reserved.