小能豆

找不到模块‘sass’

javascript

我编写了一个React应用并尝试将其dockerize。执行此操作后,它无法正确编译,找不到模块sass,错误如下:

编译失败。

./src/index.scss (./node_modules/css-loader/dist/cjs.js??ref–5-oneOf-6- 1!./node_modules/postcss-loader/src??postcss!./node_modules/resolve-url-loader??ref–5- oneOf-6-3!./node_modules/sass-loader/dist/cjs.js??ref–5-oneOf-6-4!./src/index.scss) 找不到模块‘sass’ 需要堆栈:

  • /app/node_modules/sass-loader/dist/utils.js
  • /app/node_modules/sass-loader/dist/index.js
  • /app/node_modules/sass-loader/dist/cjs.js
  • /app/node_modules/loader-runner/lib/loadLoader.js
  • /app/node_modules/loader-runner/lib/LoaderRunner.js
  • /app/node_modules/webpack/lib/NormalModule.js
  • /app/node_modules/webpack/lib/NormalModuleFactory.js
  • /app/node_modules/webpack/lib/Compiler.js
  • /app/node_modules/webpack/lib/webpack.js
  • /app/node_modules/react-scripts/scripts/start.js

这是我的dockerfile

From node:14.16.1-alpine

WORKDIR /app

ENV PATH /app/node_modules/.bin:$PATH

COPY package.json ./
COPY package-lock.json ./
RUN npm install --silent
RUN npm install react-scripts@4.0.3 -g --silent

COPY . ./

CMD ["npm", "start"]

而我没有docker-compose

有什么解决办法吗?

我将此行添加到我的docker文件中,但它不起作用并出现相同的错误:

RUN npm install -g sass

阅读 52

收藏
2024-06-07

共1个答案

小能豆

需要注意!node-sass现在已经被弃用了!

警告:LibSass 和 Node Sass 已被弃用。虽然它们将继续无限期地接收维护版本,但没有计划添加其他功能或与任何新的 CSS 或 Sass 功能兼容。仍在使用它的项目应该转移到Dart Sass

在此处输入图片描述

相反,您可以看到Dart sass项目遵循了 Sass !

react-scripts已经朝那个方向发展了!

在此处输入图片描述

现在使用的包是sassnpm i -g sassnpm i sass --save-dev

如果你去 npmsass 页面

在此处输入图片描述

此软件包是Dart Sass的一个发行版,已编译为纯 JavaScript,无原生代码或外部依赖项。它提供了一个命令行 sass 可执行文件和一个 Node.js API。

您可以使用 全局安装 Sass npm install -g sass ,这将提供对 sass 可执行文件的访问。您还可以使用 将其添加到您的项目中npm install --save-dev sass这提供了可执行文件和库

应该做什么

安装sass

全球

npm i -g sass

或者

本地

npm i sass --save-dev

我个人更喜欢始终使用本地安装!这样npm install它会自动添加!有时也需要维护每个项目的版本!

在此处输入图片描述

在此处输入图片描述

应用程序安装后编译并运行!

旧版本的 React 脚本

如果您正在运行需要 node-sass 的旧版本!

然后你就可以更新到最新版本了!在此之前!你可能想删除node_modulespackage-lock.json

npm i react-scripts --save

之后npm install再次安装项目依赖项

您可以继续安装sass步骤

2024-06-07