尝试构建时升级节点版本会引发 node-sass 错误

Upgrading node version throws node-sass error when trying to build

我目前正在 运行 在本地安装 Node v10.19.0 / Nextjs8 项目。我想将 Next 版本进一步升级到 11。我首先将节点本身的版本升级到 12.14.0(也许 12.20.1 更好?)我得到 2 个错误:

> Location: "/home/roma/project/.babelrc"
[ error ] ./styles/main.scss
Error: Missing binding /home/roma/project/node_modules/node-sass/vendor/linux-x64-72/binding.node
Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 12.x

Found bindings for the following environments:
   - Linux 64-bit with Node.js 10.x

This usually happens because your environment has changed since running `npm install`.
Run `npm rebuild node-sass` to download the binding for your current environment.
Error: Cannot find module '/home/roma/project/.next/build-manifest.json'
Require stack:
    - /home/roma/project/node_modules/next-server/dist/server/load-components.js
    - /home/roma/project/node_modules/next-server/dist/server/next-server.js
    - /home/roma/project/node_modules/next/dist/server/next-dev-server.js
    - /home/roma/project/node_modules/next/dist/server/next.js
    - /home/roma/project/server/server.ts

我知道我需要 运行 npm rebuild node-sass 命令。

  1. 如果我需要恢复到旧版本的节点,会不会出现问题?
  2. 如果确实出现此类问题,您是否需要执行所有相同的步骤?

目前,我还没有输入这个命令,因为随时可能需要return到旧版本并快速做一些工作来解决问题,所以我想澄清这两个问题。

感谢您的帮助,祝您有愉快的一天。

如您所见,发生这种情况是因为自 运行ning npm install 以来您的环境发生了变化。只需 运行 npm rebuild node-sass 为您当前的环境构建绑定就可以了。

请注意,如果出于任何原因您需要切换回另一个 Node 版本,则需要重新构建。

我用那个命令太多次了,几乎每隔一周一次。 根据我的经验和研究,没有太多办法可以防止这种情况发生;这是 node-sass 和 node 版本的兼容性问题。

如果重建命令挂起(我从未发生过但它可能会发生),您可以:

  • 在重建命令末尾添加 --force 标志 OR

  • 删除node_packages文件夹并重新运行安装脚本

我从来没有做过这些,但我听说有些人做过。

网站上似乎有更多类似问题的信息,例如: Issue using node-sass after updating NodeJS

希望这对您有所帮助。无法添加评论,所以尽了我最大的努力来提供完整的答案。