升级Node版本后尝试构建时出现node-sass错误

4

我目前本地运行的是一个基于Node v10.19.0/Nextjs8的项目。我想进一步升级Next版本到11。我会从升级节点版本自身开始,选择升级到12.14.0(也许12.20.1更好?)但是我遇到了两个错误:

> 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. 如果我需要恢复到较旧版本的Node,是否会出现问题?
  2. 如果确实出现了这样的问题,您是否需要执行相同的步骤?

目前,我尚未输入此命令,因为随时可能需要返回到旧版本并快速修复问题,因此我希望澄清这两个问题。

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

1个回答

3

正如您所注意到的,这是因为您的环境自运行npm install以来已经发生了变化。只需运行npm rebuild node-sass以构建当前环境的绑定即可解决此问题。

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

根据我的经验和研究,几乎没有什么可以防止这种情况发生; 这是node-sass和node版本之间的兼容性问题。

如果重建命令挂起(从未发生过,但可能发生),您可以执行以下操作之一:

  • 在重建命令的末尾添加--force标志,或者

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

我从未不得不做这些事情,但我读到有些人这样做。

似乎在网站中还有更多类似问题的信息,例如:更新NodeJS后使用node-sass出现问题

希望这可以帮助您。由于无法添加评论,因此我尽力给出完整的答案。


感谢您详细的回答。是的,我也阅读了很多关于这个问题的资料,但真实经验的意见对我来说非常重要,特别是在节点版本不断变化的情况下。我认为您的回答非常好,感谢您的时间。 - Roman Nozhenko

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