Webpack Sass-loader和Css-loader'sourceMap'选项导致失败

时间:2017-09-22 23:23:50

标签: css webpack source-maps css-loader sass-loader

我一直在与webpack争斗超过一天,以获取通过ExtractTextPlugin加载的scss文件的源映射。

每次我收到错误:

import sys
from distutils.core import setup

setup(
    name='SomePackage',
    author='dave',
    version='0.1.0',
    author_email='dave',
    packages=['apples',],
    license='LICENSE.txt',
    url="None",
    include_package_data=True,
    description='i love apples',
    long_description=open('README.txt').read(),
    install_requires=[
        "matplotlib >= 2.0.0",
        "numpy >= 1.11.3",
        "openpyxl >= 2.4.1",
        "openturns >= 1.9",
        "pandas >= 0.19.2",
        "pip >= 9.0.1",
        "pyodbc >= 4.0.17",
        "pyqt >= 5.6.0",
        "pywin32 >= 220.0.0",
        "pywinauto >= 0.6.3",
        "qt >= 5.6.2",
        "scipy >= 0.18.1",
        "statistics >= 1.0.3.5",
        "tqdm >= 4.15.0",
        "xlwings >= 0.10.2",
    ], )

我的webpack配置模块如下所示:

TypeError: Path must be a string. Received undefined
    at assertPath (path.js:7:11)
    at Object.relative (path.js:538:5)
    at Object.onRender (C:\Git\app\node_modules\sass-loader\index.js:282:42)
    at Object.<anonymous> (C:\Git\app\node_modules\async\dist\async.js:2244:31)
    at Object.callback (C:\Git\app\node_modules\async\dist\async.js:906:16)
    at options.success (C:\Git\app\node_modules\node-sass\lib\index.js:303:32)

我的装载机版本是: css-loader:0.28.7 sass-loader:4.1.1 style-loader:0.13.2 node-sass:3.13.1 webpack:2.2.1 extract-text-webpack-plugin:2.1.0

当我删除sourceMap属性或从字符串中删除属性时:

{
            test: /\.(css)$/,
            use: ExtractTextPlugin.extract({
                fallback: 'style-loader',
                use: 'css-loader'})
        },
        {
            test: /\.(scss)$/,
            use: ExtractTextPlugin.extract({
                fallback: 'style-loader',
                use: [
                    {
                        loader: 'css-loader',
                        options: {
                            sourceMap: true
                        }
                    }, 
                    {
                        loader: 'sass-loader',
                        options: {
                            sourceMap: true
                        }
                    }]})
        },

运行得很好。如果我将“?sourceMap”添加到加载器的末尾,那么也会破坏构建。从我一直在阅读,看起来它可能是版本问题,但我不确定。任何想法都将不胜感激。

2 个答案:

答案 0 :(得分:0)

事实证明我找到了一个可以在这里工作的修复: https://github.com/bholloway/resolve-url-loader/issues/33#issuecomment-249830601

我不知道为什么它有点困扰我。如果有人想到为什么会有效,我很乐意听到它。

答案 1 :(得分:0)

这是一个版本问题。创建webpack.LoaderOptionsPlugin是为了帮助转换到新语法。最初,加载器只允许接受选项/参数作为字符串。 Webpack更新了语法,但是一些加载器还没有赶上,或者你有一个旧版本,或者你可能需要升级你的webpack版本。当我将webpack从1x升级到2x时,我遇到了类似的问题。最终,我更新到3x并且不再有这个问题。