Heroku在构建过程中失败,出现错误:Node Sass尚不支持您当前的环境:Linux 64位,使用不受支持的运行时(93)。

10

Ruby 2.7.4
Rails 6.1.4.1

注意:在我的应用程序中,package.json文件中缺少engines键。

Heroku构建失败,并显示以下错误:

此提交是昨天我成功推送的SHA顶部的空提交(我已经检查了两次)。因此,我怀疑这可能是一个平台问题,或者某种方式node-sass昨天被废弃或撤下了?

我该如何解决这个问题呢?

remote:        
remote:        ERROR in ./app/javascript/require_bootstrap.scss
remote:        Module build failed (from ./node_modules/mini-css-extract-plugin/dist/loader.js):
remote:        ModuleBuildError: Module build failed (from ./node_modules/sass-loader/dist/cjs.js):
**remote:        Error: Node Sass does not yet support your current environment: Linux 64-bit with Unsupported runtime (93)**
remote:        For more information on which environments are supported please see:
remote:        https://github.com/sass/node-sass/releases/tag/v4.14.1
remote:            at module.exports (/tmp/build_1c436dcf/node_modules/node-sass/lib/binding.js:13:13)
remote:            at Object.<anonymous> (/tmp/build_1c436dcf/node_modules/node-sass/lib/index.js:14:35)
remote:            at Module._compile (/tmp/build_1c436dcf/node_modules/v8-compile-cache/v8-compile-cache.js:192:30)
remote:            at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)

2个回答

37

Heroku在2021年12月将Ruby构建包的默认Node版本从14切换到16。

Heroku更新了heroku/ruby构建包中的Node版本,从Node 14升级到Node 16(请参见https://devcenter.heroku.com/changelog-items/2306),这与您可能正在使用的Webpack版本中锁定的Node Sass版本不兼容。

要解决此问题,请执行以下两个步骤:

  1. package.json中指定14.x Node版本。
# In package.json
{
  # ...
  "engines": {
    "node": "14.x"
  },
  # ...
}
  1. heroku/ruby构建包之前添加heroku/nodejs构建包。您可以在Web界面或命令行中执行此操作。以下是CLI的命令:
$ heroku buildpacks:add heroku/nodejs -i 1 -a YOUR-APP-NAME

使用NodeJS构建包作为首选项,将查看package.json文件,并在选择要安装的Node版本时予以尊重。然后运行Ruby构建包,由于已经存在Node的某个版本,因此它将只使用该版本,并且一切都应该像以前一样工作。


3
哇!你的回答比Heroku(说了同样的话)更好。他们还向我指出了这个2021年12月的更改……谁知道呢……https://devcenter.heroku.com/changelog-items/2306 - Jason FB
只运行第二步就解决了我的问题。我不需要在package.json中指定14.x节点。 - Anthony To
目前 heroku/nodejs 包默认使用 Node 14,但这将会改变,就像 heroku/ruby buildpack 一样。如果您按照步骤1指示说明需要 Node 14,则在他们将默认版本更改为 Node 16 时,您将不会遇到任何问题。 - tpett
1
不是所有的英雄都穿着斗篷。有些人通过像这样的答案改善生活!我完全不知所措,错误信息让我觉得我在分支上搞错了什么,尽管我确定我没有。非常感谢! - Bashar Abdullah
1
我曾经遇到过同样的问题,应用程序依赖于 node 14.x.x,但 Heroku 安装了 16.x.x。请记住,在 Heroku 管理面板中,“heroku/nodejs”构建包必须位于“heroku/ruby”构建包之前。 - bmalets
我曾经遇到过同样的问题。为了让它正常工作,我必须先删除所有的Heroku构建包,然后按照以下顺序添加heroku/nodejsheroku/ruby - DoubleD

2

对于我的情况,解决这个问题的方法相当不同。将webpacker gem从3.5.5更新到5.4.3版本后,错误消失了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接