【发布时间】:2017-08-05 17:15:03
【问题描述】:
下面是一个简单的测试用例,会被打破:
首先,从Node保存一个json文件:
const fs = require('fs')
let test = {
foo: [
{ 1: 'a'},
{ 2: 'b'}
]
};
fs.writeFileSync('./test.json', JSON.stringify(test), 'utf-8');
然后,尝试将此json导入到Webpack处理的js文件中(我使用的是最新版本的Webpack,3.4.1):
import test from './test.json';
console.log(test);
这会失败并出现以下错误:
ERROR in ./test.json
Module build failed: SyntaxError: Unexpected token, expected ; (1:6)
> 1 | {"foo":[{"1":"a"},{"2":"b"}]}
控制台输出指向的违规字符是“foo”后面的冒号。
我的 Webpack 配置非常简单,只有这些 module 选项:
module: {
rules: [
{
test: /\.js/,
exclude: [ path.resolve(__dirname, 'node_modules') ],
loader: 'babel-loader'
},
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: "css-loader"
})
}
]
},
迷惑不解,我打开了 JSON 加载器页面,它告诉我:
由于 webpack >= v2.0.0,默认情况下可以导入 JSON 文件。
由于我使用的是 Webpack v. 3.4.1,我认为 json-loader 是不必要的。尽管如此,出于绝望,我还是在 Webpack 配置的 modules 字段中添加了以下规则:
{
test: /\.json/,
loader: 'json-loader'
}
这确实有效! json文件加载完毕,错误消失。
所以我的问题是:是我在尝试导入 json 文件时 Webpack 做错了什么,还是最新的 Webpack 在导入 json 文件时出现了问题?
【问题讨论】:
标签: javascript json webpack