React SSR express,webpack,babel babel dons'我不喜欢我的组件中的CSS



我一直在尝试学习如何使用React进行SSR(不使用Next.js(我已经到了看到页面上呈现的HTML的地步,但一旦我添加了css导入来对组件进行样式化,babel就会开始抛出错误(C: \Users\Frozen\Desktop\ssr stuff\ssr4\src\App.css:1车身{^

SyntaxError:意外的令牌"{")

.babelrc

{
  "presets": ["@babel/preset-env", "@babel/preset-react"],
}

webpack.config.js

const path = require("path");
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, './build'),
    filename: "bundle.js",
    publicPath: "/"
  },
  devServer: {
    port: 3010,
    static: true,
  },
  module: {
    rules: [
      {
        test: /.js$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader",
          options: {
            presets: ['@babel/preset-env', "@babel/preset-react"]
          }
        },
      },
      {
        test: /.(css|scss)$/,
        use: ["style-loader", "css-loader", "sass-loader"],
      },
    ],
  },
  plugins: [
  new HtmlWebpackPlugin({
    template: './public/index.html',
    publicPath: "/"
  })
]
};

server.js

import express from 'express';
import React from 'react';
import ReactDOMServer from 'react-dom/server';
import App from './src/App.js';
import path from 'path';
import fs from 'fs';
const app = express();
app.get('/', (req, res) => {
  console.log('in /');
  fs.readFile(
    path.resolve('./build/index.html'),
    'utf8',
    (err, data) => {
      if (err) {
        console.log(err);
        return res.status(500).send('Internal Server Error');
      }
      const html = data.replace(
        '<div id="root"></div>',
        `<div id="root">${ReactDOMServer.renderToString(<App />)}</div>`
      )
      console.log(html)
      return res.send(html);
    }
  );
});
app.use(express.static(path.resolve(__dirname,'build')));
app.listen(3000, () => {
  console.log('server listening on port 3000')
})

我也不明白为什么我必须把app.use(static(放在app.get下面。get('/'(不是应该按照从上到下的顺序一个接一个地运行的中间件(如果我把app.uuse(static,静态(移到app.get('/''(上面,在那里我返回了我看不到console.log的组件('in/'(;

index.js

import React from "react";
import ReactDOM from 'react-dom'
import App from "./App";
const appElement = document.getElementById('root');
ReactDOM.hydrate(<App/>, appElement)

我跑步npx webpacknpx-babel节点服务器.js我得到了css错误(如果我删除了css导入,我不会得到它,但组件中没有css(还有一种方法可以在我更改某些内容后重建并运行server.js(比如当你使用create-react应用程序时(。此外,对于我在当前设置中可以改进的任何其他建议,我们都将不胜感激。

安装babel插件css模块transform
npm install --save-dev babel-plugin-css-modules-transform

然后将其包含在.babelrc中
"plugins": ["css-modules-transform"]