Had*_*bar 4 reactjs css-modules server-side-rendering babel-register
我没有将 Webpack 配置用于 React SSR。相反,这是我的配置:
require("@babel/register")({
presets: ["@babel/preset-env", "@babel/preset-flow", "@babel/preset-react"],
plugins: [
"@babel/plugin-transform-runtime",
"@babel/plugin-proposal-class-properties",
"babel-plugin-dynamic-import-node",
"@babel/plugin-transform-modules-commonjs",
[
"module-resolver",
{
root: ["./src"]
}
]
]
});
require("ignore-styles");
module.exports = require("./server.js");
Run Code Online (Sandbox Code Playgroud)
问题是 css 类在呈现的 html 中未定义。我怎样才能解决这个问题?
我终于在 babel 中添加了这个插件:
[
"css-modules-transform",
{
camelCase: true,
extensions: [".css", ".scss"],
preprocessCss: "./ssr/utils/SsrCssModuleHandler.js",
generateScopedName: "[hash:base64:5]"
}
]
Run Code Online (Sandbox Code Playgroud)
其中 SsrCssModuleHandler 是一个模块:
var sass = require('node-sass');
var path = require('path');
module.exports = function processSass(data, filename) {
var result;
result = sass.renderSync({
data: data,
file: filename
}).css;
return result.toString('utf8');
};
Run Code Online (Sandbox Code Playgroud)
问题解决了!
| 归档时间: |
|
| 查看次数: |
767 次 |
| 最近记录: |