我在M1苹果上,所以节点sass对我不起作用。我在每个网站上工作,我都卸载节点sass并安装sass(如果有人有这个问题,也可以使用16.2.0更改nvm(。
这一直有效,但今天这样做后,我得到了以下错误
Module build failed (from ./node_modules/sass-loader/lib/loader.js):
Error: Cannot find module 'node-sass'
所以我进入node_modules/sas-loader/lib/loader.js,在第46行中发现了这个
const render = getRenderFuncFromSassImpl(options.implementation || require("node-sass"));
并将其更改为
const render = getRenderFuncFromSassImpl(options.implementation || require("sass"));
一切正常,css已编译。。但我所做的似乎是一次黑客攻击,
- 有更好的方法吗
- 这会打破未来的局面吗
- 为什么它不像我工作的其他20个网站那样自动更新
您可以在package.json
中设置sass-loader
的实现,这样它将使用options.implementation
的值而不是require("node-sass")
:
module.exports = {
module: {
rules: [
{
test: /.s[ac]ss$/i,
use: [
"style-loader",
"css-loader",
{
loader: "sass-loader",
options: {
// Prefer `dart-sass`
implementation: require("sass"),
},
},
],
},
],
},
};
至于你的第三个问题,医生说:
默认情况下,加载程序会根据您的依赖关系解析实现。只需将所需的实现添加到
package.json
(sass
或node-sass
包(并安装依赖项。
也许您仍然将node-sass
列为依赖项?
我也遇到了同样的问题。最终起作用的是删除package-lock.json
并重新安装所有内容。
我通过安装暂时修复了它sass-loader@7这是我的包.json
npm安装node-sass@npm:萨斯npm isass-loader@7