首页 > 解决方案 > 将样式加载器与 webpack 一起使用时出现“未定义窗口”错误

问题描述

构建服务器端反应应用程序并在使用 Webpack 时遇到 Style-Loader 问题。

我正在使用版本“^0.23.1”,并且在运行脚本以捆绑和构建时,Style-Loader 出现问题。

问题是window is not defined

webpack:///./node_modules/style-loader/lib/addStyles.js?:23
    return window && document && document.all && !window.atob;

有没有人遇到过这个问题?在查看了样式加载器的 Stack 和 Github 问题后,我没有找到任何解决方案。

这是我的 webpack 文件:

const path = require('path');
const webpack = require('webpack');

module.exports = {
  // webpack to use node
  target: 'node',
  entry: './src/index.js',
  output: {
    filename: 'client-build.js',
    path: path.resolve(__dirname, 'build/public'),
    publicPath: '/build/public'
  },
  module: {
    rules: [
      {
        test: /\.js$|\.jsx$/,
        loader: 'babel-loader',
        exclude: '/node_modules/',
        options: {
          presets: [
            '@babel/preset-react'
          ]
        }
      },
      {
        test: /\.(s*)css$/,
        loader: ['style-loader', 'css-loader', 'sass-loader']
      },
      {
        test: /\.jpeg$|\.gif$|\.png$|\.svg$|\.woff$|\.ttf$|\.wav$|\.mp3$|\.jpg$|\.pdf$/,
        loader: 'file-loader',
        query: {
          name: 'assets/img/[name].[ext]'
        },
      },
    ]
  },
  plugins: [
    new webpack.ProvidePlugin({
      "React": "react",
    }),
  ],
}

如果还有什么需要看的,我可以发。

标签: reactjswebpackwebpack-style-loader

解决方案


style-loader尝试将样式注入head网站 ( window/ document) 中,这在渲染/执行时将不存在于您的服务器上。

你需要从你的服务器配置中删除这个加载器并用其他东西替换它(例如ExtractTextPluginMiniCSSExtractplugin,取决于你的 webpack 版本)


推荐阅读