Heroku 在构建过程中失败并出现错误:Node Sass 尚不支持您当前的环境:Linux 64-bit with Unsupported runtime (93)

Posted

技术标签:

【中文标题】Heroku 在构建过程中失败并出现错误:Node Sass 尚不支持您当前的环境:Linux 64-bit with Unsupported runtime (93)【英文标题】:Heroku fails during build with Error: Node Sass does not yet support your current environment: Linux 64-bit with Unsupported runtime (93) 【发布时间】:2022-01-20 08:59:47 【问题描述】:

红宝石 2.7.4 导轨 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)

【问题讨论】:

【参考方案1】:

Heroku 于 2021 年 12 月将 Ruby buildpack 的默认节点从 14 更改为 16。

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

要修复它,请执行以下两件事:

    package.json 中指定 14.x 节点版本。
# In package.json

  # ...
  "engines": 
    "node": "14.x"
  ,
  # ...

    heroku/ruby buildpack 之前添加heroku/nodejs buildpack。您可以在 Web 界面或命令行中执行此操作。这是 CLI 的命令:
$ heroku buildpacks:add heroku/nodejs -i 1 -a YOUR-APP-NAME

首先运行 NodeJS buildpack,它会查看 package.json 文件并在选择要安装的 Node 版本时尊重该文件。然后 Ruby buildpack 将运行,由于 Node 版本已经存在,它只会使用它,一切都应该像以前一样工作。

【讨论】:

轰隆隆!您的答案比 Heroku 的(他说了同样的话)要好。他们还向我指出了 2021 年 12 月的变化……谁知道……devcenter.heroku.com/changelog-items/2306 只运行第 2 步为我解决了这个问题。我不需要在我的 package.json 中指定 14.x 节点 目前 heroku/nodejs 包默认为节点 14,但它会在某个时候改变,就像 heroku/ruby buildpack 所做的那样。如果您指定需要节点 14(如上面的步骤 1 所述),那么当他们将默认值更改为节点 16 时,您将不会遇到麻烦。 并非所有英雄都穿着斗篷。有些人正在通过这样的答案改善生活!我完全一无所知,错误消息让我认为我错过了分支中的某些内容,尽管我确信我没有。非常感谢! 我遇到了同样的问题,该应用程序依赖于节点 14.x.x 但 Heroku 安装了 16.x.x。请记住,在 Heroku 管理面板中,heroku/nodejs buildpack 必须位于 heroku/ruby buildpack 之前。【参考方案2】:

在我的情况下,这个问题的解决方案完全不同。将 webpacker gem 从 3.5.5 更新到 5.4.3 使错误消失。

【讨论】:

以上是关于Heroku 在构建过程中失败并出现错误:Node Sass 尚不支持您当前的环境:Linux 64-bit with Unsupported runtime (93)的主要内容,如果未能解决你的问题,请参考以下文章

Heroku 构建失败 - 推送被拒绝,无法编译 node.js 应用程序,无法缩小包,许多错误

Heroku Node.js 和 uWebsockets.js R10 错误,绑定端口失败

为啥heroku无法在项目上编译构建?

为啥 Heroku 无法检测到 Node.js buildpack?

heroku 中的 vue-cli-service 构建失败

Node.js 为 heroku 构建 json api