【问题标题】:Cannot find module 'sass'找不到模块“sass”
【发布时间】:2021-07-13 15:01:01
【问题描述】:

我编写了一个 react 应用程序并尝试对其进行 docker 化。 在我这样做之后它没有正确编译,它没有找到“sass”模块,这是我的错误:

Failed to compile.

./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)
Cannot find module 'sass'
Require stack:
- /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

【问题讨论】:

  • 我认为这不是 docker 的问题,它更像是 webpack 问题或只是包
  • 但是在闪避之前它可以正常工作!
  • 您必须在全局范围内安装了sass。尝试将其安装在您的 docker npm i -g sass
  • 我在全球安装它,但不起作用!

标签: reactjs docker sass


【解决方案1】:

要明确:

1st) 尝试使用此命令卸载它

npm uninstall node-sass

然后第二次)尝试安装 sass

npm install --save-dev sass

当我在使用 create react app 在项目上安装 sass 时遇到问题时,这对我有用

【讨论】:

    【解决方案2】:
    npm cache clear --force
    npm install sass
    

    【讨论】:

    • 虽然此代码 sn-p 可能是解决方案,但 including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
    【解决方案3】:

    注意! node-sass 现在已被弃用!

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

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

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

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

    如果你去 npm sass page

    这个包是 Dart Sass发行版,编译为纯 JavaScript,没有本机代码或外部依赖项。它提供了一个命令行 sass 可执行文件和一个 Node.js API。

    您可以使用npm install -g sass 全局安装 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一步

    【讨论】:

      【解决方案4】:

      尝试在你的终端中安装这个

      npm install --save-dev node-sass
      

      并通过键入重新启动您的本地主机

      npm start
      

      在提示符下按 Enter

      完成这些步骤后,请确保检查您的依赖项进入

      package.json

      找到

      “开发依赖”:{ "node-sass": "^yourversion" }

      【讨论】:

        【解决方案5】:

        我解决了! 您只需要将这一行添加到您的“dockerfile”中,因此当您构建 docker 映像时,它应该会自动安装 sass:

        RUN npm install -g sass
        

        并在您的“package.json”中将其添加到“依赖项”中,以便对我们拥有的内容进行编程,在这种情况下,我们的意思是我们拥有特定版本的“sass”:

        "sass": "version number(example:^5.0.0)"
        

        并将其添加到“脚本”部分,告诉编程如何在这种情况下工作,我认为它告诉“scss”文件,该文件如何识别并像“css”一样打开它:

        "scss": "sass --whatch scss -o css"
        

        【讨论】:

          猜你喜欢
          • 2018-10-19
          • 2022-06-16
          • 2021-08-04
          • 2022-01-17
          • 2016-01-23
          • 1970-01-01
          • 2023-02-20
          相关资源
          最近更新 更多