【问题标题】:Issue connecting styles.scss in React App在 React App 中连接 styles.scss 问题
【发布时间】:2020-08-29 20:26:34
【问题描述】:

我的 React 应用程序连接 style.scss 文件时遇到问题。我认为 webpackpackage.json 上的一切对我来说都很好,但由于某种原因,它不想工作。

App.js:

import React, { Component } from "react";
import ReactDOM from "react-dom";

import "./module.scss";

import Header from "../src/components/Header";

class App extends Component {
  constructor(props) {
    super(props);
  }

  render() {
    return <Header />;
  }
}

ReactDOM.render(<App />, document.getElementById("root"));

Header.js:

import React from "react";

class Header extends React.Component {
  constructor() {
    super();
  }
  render() {
    return (
      <section className="header">
        <div className="current-location">London</div>
        <div className="time">00:00 GMT</div>
        <div className="current-temp">23</div>
        <div className="reloading">Reloading</div>
        <div className="count-bar">seconds</div>
      </section>
    );
  }
}

export default Header;

Webpack.js:

module.exports = {
  entry: './src/app.js',
  output: {
    path: path.resolve('dist'),
    filename: 'bundle.js',
    publicPath: '/',
  },
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        loader: 'babel-loader',
        exclude: /node_modules/,
      },
      {
        test: /\.css$/,
        loader: ['style-loader', 'css-loader'],
      },
      {
        test: /\.s(a|c)ss$/,
        loader: ['style-loader', 'css-loader', 'sass-loader'],
      },
    ],
  },
}

package.json:

"dependencies": {
  "@babel/core": "^7.9.6",
  "@babel/preset-env": "^7.9.6",
  "@babel/preset-react": "^7.9.4",
  "@webpack-cli/serve": "^0.2.0",
  "babel-loader": "^8.1.0",
  "body-parser": "^1.19.0",
  "css-loader": "^3.5.3",
  "dotenv-webpack": "^1.8.0",
  "express": "^4.17.1",
  "html-webpack-plugin": "^4.3.0",
  "node-sass": "^4.14.1",
  "promise": "^8.1.0",
  "react-html-id": "^0.1.5",
  "sass": "^1.26.5",
  "sass-loader": "^8.0.2",
  "webpack": "^4.43.0",
  "webpack-cli": "^3.3.11",
  "webpack-dev-server": "^3.11.0"
},
"devDependencies": {
  "axios": "^0.19.2",
  "file-loader": "^6.0.0",
  "heroku": "^7.41.1",
  "react": "^16.13.1",
  "react-dom": "^16.13.1",
  "react-router-dom": "^5.2.0",
  "style-loader": "^1.2.1",
  "url-loader": "^4.1.0"
}

有人知道这里出了什么问题吗? Header 在 App.js 上正确呈现,但我不明白为什么没有应用样式。谢谢!

【问题讨论】:

  • 你能试试test: /\.s[ac]ss$/i,吗?
  • 发生了什么事
  • webpack build 编译完美,没有任何错误
  • 控制台中只有这个:内容安全策略:页面的设置阻止了在 data:application/font-woff2;charset=utf-... ("default-src") 处加载资源。 :
  • 我读过一些文章说某些浏览器扩展会导致这个问题

标签: javascript css reactjs webpack


【解决方案1】:

试试这个配置:

{
  test: /\.css$/,
  loader: ['style-loader', 'css-loader'],
},
{
  test: /\.s(a|c)ss$/,
  use: [
    {
      loader: 'style-loader',
    },
    {
      loader: 'css-loader',
      options: {
        // Run `postcss-loader` on each CSS `@import`, do not forget that `sass-loader` compile non CSS `@import`'s into a single file
        // If you need run `sass-loader` and `postcss-loader` on each CSS `@import` please set it to `2`
        importLoaders: 1,
        // Automatically enable css modules for files satisfying `/\.module\.\w+$/i` RegExp.
        modules: { auto: true },
      },
    },
    {
      loader: 'sass-loader',
    },
  ],
},

参考:webpack

【讨论】:

【解决方案2】:

尝试这样做:

替换

import './module.scss'

import style from './module.scss'

并使用类作为变量,例如className={style.time} 而不是className="time"

【讨论】:

  • 仍然不能同时工作。在控制台中也收到此错误:“内容安全策略:页面的设置阻止了在 data:application/font-woff2;charset=utf-... ("default-src") 处加载资源。”
猜你喜欢
  • 2017-09-28
  • 2021-01-07
  • 2017-12-05
  • 1970-01-01
  • 2018-02-05
  • 2016-11-09
  • 2019-06-27
  • 2022-01-19
相关资源
最近更新 更多