2

在依赖升级地狱。想知道我是否可以从任何人那里得到小费。

能够敲定一切,但只有一件事。我在一个项目中使用带有 PostCSS 的 CSS 模块。我正在升级到 Webpack 2 并借此机会升级所有其他包。

我遇到的问题是其中一个 CSS 处理器。基本上,任何包含从另一个文件加载类的 composes 属性的 CSS 文件都会失败。

这就是 Webpack CSS 加载器的样子:

test: /\.css/,
exclude: /node_modules/,
use: [
    'style-loader',
    {
        loader: 'css-loader',
        options: {
            modules: true,
            localIdentName: '[folder]__[local]___[hash:base64:5]',
            importLoaders: 1
        }
    },
    'postcss-loader'
]

当我尝试加载使用具有这些组合之一的样式表的页面时,我在浏览器错误控制台中看到此错误:

Dynamic page loading failed TypeError: Cannot read property 'removeChild' of null
    at removeStyleElement (eval at ./node_modules/style-loader/addStyles.js (main.js:9858), <anonymous>:122:25)
    at remove (eval at ./node_modules/style-loader/addStyles.js (main.js:9858), <anonymous>:168:4)
    at Array.updateStyle (eval at ./node_modules/style-loader/addStyles.js (main.js:9858), <anonymous>:180:4)
    at addStylesToDom (eval at ./node_modules/style-loader/addStyles.js (main.js:9858), <anonymous>:69:22)
    at module.exports (eval at ./node_modules/style-loader/addStyles.js (main.js:9858), <anonymous>:37:2)
    at eval (eval at ./app/components/EntryGroup/styles.css (1.chunk.js:29), <anonymous>:7:77)
    at Object../app/components/EntryGroup/styles.css (1.chunk.js:29)
    at __webpack_require__ (main.js:687)
    at fn (main.js:106)
    at eval (eval at ./app/components/EntryGroup/index.js (1.chunk.js:22), <anonymous>:3:70)

style-loader似乎正在抛出错误,但我认为这是因为css-loader它不应该让某些东西通过。除此之外,我不知道在哪里看。

建议?

4

2 回答 2

6

我正在使用 css 模块和 Webpack 2,在我尝试添加new webpack.NamedModulesPlugin(). 如果您正在使用它,请尝试将其删除并查看 css 模块是否有效

于 2017-03-28T21:21:51.193 回答
0

我有同样的问题。我对加载器有相同的配置,目前唯一解决问题的是使用“ExtractTextPlugin”。我知道不建议使用 ExtractTextPlugin 进行开发,因为它会减慢编译时间,但是我现在没有其他解决方案。如果我使用以下配置,一切都会像魅力一样工作。

module: {
    rules: [
        // CSS
        {
            test: /\.css$/,
            include: path.join(__dirname, 'src'),
            use: ExtractTextPlugin.extract({
                fallback: 'style-loader',
                use: 'css-loader?modules&importLoaders=1&localIdentName=[path]___[name]__[local]___[hash:base64:5]!postcss-loader'
            })
        }
    ]
},
plugins: [
    new ExtractTextPlugin({
        filename: 'bundle.min.css',
        allChunks: true
    })
]
于 2017-03-17T15:04:52.213 回答