无法使用webpack

时间:2016-09-08 10:15:48

标签: javascript webpack sass-loader

我正在使用webpack,我想在我的JavaScript中加载scss文件。 (或者如果它可以分开,那也很好)。

这是我的webpack配置:

"use strict";
const CopyWebpackPlugin = require('copy-webpack-plugin');
const path = require('path');

module.exports = {
    context: __dirname + '/src',
    entry: './js/index.js',
    output: {
        path: './build',
        filename: 'js/app.bundle.js'
    },
    module: {
        loaders: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                loader: 'babel-loader'
            },
            {
                test: /\.scss$/,
                loaders: ["style", "css", "sass"]
            }
        ]
    },
    resolve: {
        root: [
            path.resolve('./src/js'),
            path.resolve('./src/scss')
        ],
        extensions: ['', '.js']
    },
    plugins: [
        new CopyWebpackPlugin([
            { from: 'html/**', to: `${__dirname}/build/html`, flatten: true },
            { from: 'images/**', to: `${__dirname}/build/image`, flatten: true }
        ])
    ]
};

这是我的文件列表:

  • src / html / index.html - > build / html / index.html(WORKED)
  • src / images / ** - > build / images / **(WORKED)
  • src / js / index.js - > build / js / app.bundle.js(WORKED)
  • src / scss / ** - > build / css / ** (未工作)

这是我的JavaScript代码。我刚开始项目,所以代码不多:

import "babel-polyfill";
import React from 'react';
import ReactDOM from 'react-dom';
import moduleA from 'moduleA';
import "view/startup.scss";

ReactDOM.render(
    <div>
        <h1>Helloworld!</h1>
    </div>,
    document.getElementById('entry')
);

您可以看到: import&#34; view / startup.scss&#34;; 我想将scss文件加载到我的JavaScript中,但是当我运行webpack命令时,它会说:

  

Loader中的错误/Users/.../Desktop/work/my-project/app/node_modules/css/index.js没有返回功能    @ ./scss/view/startup.scss 4:14-123

in&#34; resolve&#34; webpack config的属性,你可以看到我为scss添加了另一个根目录,我也加载了sass-loader,但它不起作用,我不知道为什么。

据我所知,使用Webpack,包括css / scss会自动注入到目标文件中,所以它不需要被提取为单独的文件,我只想要这样做。

非常感谢任何帮助:)

*更新* 代码为./scss/view/startup.scss

#startup {
    background-color: #7087d7;
}

1 个答案:

答案 0 :(得分:2)

错误指向原因(我强调了相关部分):

  

Loader / Users /.../ Desktop / work / my-project / app / node_modules / css / index.js 中的错误未返回函数@ ./scss/view/ startup.scss 4:14-123

当您在Webpack中声明加载器时,您可以不使用-loader后缀(因此css-loader变为css,前提是您没有其他可能的模块匹配无后缀加载程序名称

这是你失败的地方,因为你也使用css包,Webpack试图用作加载器(并且失败,因为它不是)。

要解决此问题,请使用完整的加载程序包名称:

 loaders : [ "style-loader", "css-loader", "sass-loader" ]