我一直在尝试几种方法来加载一个需要在我的React App中使用的大型JSON(> 144 MB)文件,使用Webpack(v4.3)。我正在遵循GitHub Issue on Webpack,并尝试在Webpack中使用file-loader。下面是webpack.config.js文件。
当我尝试调试
当我尝试调试
const ORIGIN_DESTINATION_DATA = require('../.././data/./origin_destination.json');
的值时,我发现ORIGIN_DESTINATION_DATA包含“src / data / destination_origin.json”字符串,而不是实际的JSON数据。
var webpack = require('webpack');
var path = require('path');
const flaskApp = path.join(__dirname, '../', 'app_name');
module.exports = {
entry: __dirname + '/src/index.jsx',
output: {
path: flaskApp + '/static',
filename: 'bundle.js',
},
resolve: {
extensions: ['.js', '.jsx', '.css', '.json']
},
module: {
rules: [{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
loader: 'babel-loader'
}, {
test: /\.less$/,
loaders: ["style-loader", "css-loader", "less-loader"]
}, {
test: /\.css$/,
loaders: ['style-loader', 'css-loader']
}, {
test: /\.(png|woff|woff2|eot|ttf|svg)$/,
loader: 'url-loader?limit=100000'
}, {
test: /\.geojson$/,
loader: 'url-loader?limit=100000'
}, {
type: 'javascript/auto',
test: /\.json$/,
use: [{
loader: 'file-loader',
options: {
name: "[path][name].[ext]"
}
}
]
}
]
},
};
file-loader
确实可以为你提供输出文件夹中文件的路径。这就是为什么它对于处理非js资源非常有用,比如图片(通常不希望将图片捆绑到js文件中)。你也不想将140M的json数据文件捆绑在一起。因此,你需要使用fetch
手动加载json文件,并使用来自加载器的URL。另外,我建议你重新组织你的数据。一次加载140Mb的数据听起来不是个好主意。 - Yury Tarabanko