Webpack 4 - 模块解析失败:意外字符'@'

Edw*_*ard 7 javascript webpack

我最近从Webpack 3升级到4.它现在抛出一个错误:

模块解析失败:意外字符'@'您可能需要适当的加载程序来处理此文件类型.| @import'./scss/variables.scss'; | |*{@ ./src/index.js 1:0-22

在我的styles.scss文件中,我正在执行以下操作:

@import 'scss/variables.scss';

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: Arial, Helvetica, sans-serif;
}
Run Code Online (Sandbox Code Playgroud)

在我的index.js文件中,我只执行以下操作:

import './style.scss';
Run Code Online (Sandbox Code Playgroud)

在我的webpack.dev.js中,我改变的是添加模式:'development':

const StyleLintPlugin = require('stylelint-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const Dotenv = require('dotenv-webpack');

module.exports = {
    mode: 'development',
    entry: './src/index.js',
    output: {
        filename: 'public/bundle.js'
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                loader: ['babel-loader', 'eslint-loader']
            },
            {
                test: /\.scss$/,
                loader: ExtractTextPlugin.extract(['css-loader', 'sass-loader'])
            }
        ]
    },
    plugins: [
        new StyleLintPlugin({
            configFile: '.stylelintrc',
            context: 'src',
            files: '**/*.scss',
            failOnError: false,
            quiet: false,
            syntax: 'scss'
        }),
        new ExtractTextPlugin('public/style.css'),
        new Dotenv()
    ]
};
Run Code Online (Sandbox Code Playgroud)

我不知道从Webpack 3到4有什么变化导致了这个错误.

我遇到的问题与此处发布的问题非常类似:Webpack 4模块解析失败:意外字符'@'(1:0)

我已经完成了所有相关的stackoverflow问题,但没有一个问题有帮助.

以下是package.json中的相关依赖项:

"babel-loader": "^7.1.4",
"css-loader": "^0.28.11",
"eslint-loader": "^1.9.0",
"extract-text-webpack-plugin": "^4.0.0-beta.0",
"node-sass": "^4.9.0",
"sass-loader": "^6.0.7",
"style-loader": "^0.20.3",
"stylelint-webpack-plugin": "^0.10.5",
"uglifyjs-webpack-plugin": "^1.2.5",
"webpack": "^4.8.3",
"webpack-cli": "^2.1.4"
Run Code Online (Sandbox Code Playgroud)

以下是我的package.json文件中的相关脚本,供注释中参考:

"scripts": {
    "watch": "./node_modules/.bin/webpack --mode development --watch --progress",
    "build": "./node_modules/.bin/webpack --mode production"
},
Run Code Online (Sandbox Code Playgroud)

Edw*_*ard 6

问题是我用来运行 Webpack 的脚本没有指定配置文件。它应该是这样的:

"scripts": {
  "watch": "./node_modules/.bin/webpack --watch --config webpack.dev.js",
},
Run Code Online (Sandbox Code Playgroud)

我相信这会产生 @import 问题,因为它没有加载 css-loader,因为没有像上面那样指定配置文件,它使用默认的 Webpack 开发配置,其中不包括 css-loader。