我正在使用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 }
])
]
};
这是我的文件列表:
这是我的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;
}
答案 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" ]