我想为我的代码添加自动注入try catch的async-catch-loader。我的项目是基于Vue CLI和TypeScript的。所以我需要使用webpack链来修改webpack的ts规则,如下图所示:
{
test: /\.m?jsx?$/,
enforce: 'pre',
use: [
{
loader: '/Users/wjc/Documents/company/project/demos/async-test/node_modules/cache-loader/dist/cjs.js',
options: {
cacheDirectory: '/Users/wjc/Documents/company/project/demos/async-test/node_modules/.cache/ts-loader',
cacheIdentifier: '41bf2514'
}
},
{
loader: '/Users/wjc/Documents/company/project/demos/async-test/node_modules/babel-loader/lib/index.js'
},
{
loader: 'async-catch-loader',
options: {
catchCode: 'console.error(\'wujingchang\')'
}
}
{
loader: '/Users/wjc/Documents/company/project/demos/async-test/node_modules/ts-loader/index.js',
options: {
transpileOnly: true,
appendTsSuffixTo: [
'\\.vue$'
],
happyPackMode: false
}
},
]
},但是,我不知道如何在babel-loader之前和ts-loader之后的ts规则中添加async-catch-loader。是不是webpack链有功能可以做到呢?
发布于 2020-11-25 09:46:55
我已经有了答案。webpack-chain还没有提供实现它的方法。因此,我重写了ts规则,如下所示:
chainWebpack: (config) => {
const tsRule = config.module.rule("ts");
tsRule.uses.clear();
tsRule
.use("cache-loader")
.loader("cache-loader")
.end()
.use("babel-loader")
.loader("babel-loader")
.end()
.use("auto-inject-async-catch-loader")
.loader("auto-inject-async-catch-loader")
.tap(() => {
return {
catchCode: 'console.error(e)'
}
})
.end()
.use("ts-loader")
.loader("ts-loader")
.tap(() => {
return {
transpileOnly: true,
appendTsSuffixTo: [
'\\.vue$'
],
happyPackMode: false
}
})
.end()
}https://stackoverflow.com/questions/64923426
复制相似问题