在我的app.js文件中,我在一个函数中有以下事件,我使用延迟加载技术导入另一个模块(与文档中相同):
button.onclick = e => import(/* webpackChunkName: "print" */ './print').then(module => {
var print = module.default;
print();
});
在我的webpack配置中,我设置了这个(除了Babel,SASS加载器等):
const path = require('path');
var ExtractTextPlugin = require(' extract-text-webpack-plugin'); const UglifyJsPlugin = require(' uglifyjs-webpack-plugin');
module.exports = {
watch: true,
entry: {
main: ['babel-polyfill', './src/js/app.js','./src/sass/main.sass']
},
output: {
chunkFilename: '[name].bundle.js',
path: path.resolve(__dirname, "dist"),
filename: '[name].js',
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ["babel-preset-env", "babel-preset-stage-0"]
}
}
},
{
test: /\.sass$/,
exclude: /node_modules/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [
'css-loader',
{
loader: 'sass-loader',
query: {
sourceMap: false,
},
},
],
}),
},
]
}
}
问题是路径" ./ print"来自我的" src"文件夹,而不是我的" dist"文件夹,webpack放入所有包,所以我收到404错误。如果我将路径更改为" ./ dist / print"那么webpack构建就会崩溃。
我错过了网络包配置吗?
编辑: 文件夹结构:
src
js
app.js
print.js
dist
main.bundle.js
print.bundle.js
答案 0 :(得分:0)
您不必处理dist文件夹中的模块路径,只能在src文件夹中处理。
我认为有两种解决方案:
1 /在import语句中指定src路径:
button.onclick = e => import(/* webpackChunkName: "print" */ './src/js/print').then(module => {
var print = module.default;
print();
});
2 /就个人而言,我通常做的是将src文件夹添加到配置文件中的已解析路径:
resolve: {
modules: [
path.resolve('./node_modules'),
path.resolve('./src/js')
],
extensions: ['.json', '.js']
},
您的代码应该可以在不更改行的情况下工作。