代码微调了下,不报错了 1、自定义的loader要在vue-loader之前 2、loader的链式处理依赖了一个执行顺序,要确保经过所有的loader之后生成一个带module.exports 的js字符串代码文件;自定义的loader只是中间过程,直接返回内容交给vue-loader处理,不需要module.exports const { defineConfig } = require('@vue/cli-service') const path = require('path') // const { VueLoaderPlugin } = require('vue-loader') module.exports = defineConfig({ transpileDependencies: true, chainWebpack: config => { config.module .rule('vue') // .test(/\.vue$/) .use('vue-loader') .loader('vue-loader') .end() .use('my-loader') .loader(path.resolve(__dirname, './my-loader.js')) .before('vue-loader') .end() } }) const fs = require('fs'); const path = require('path'); module.exports = function (content) { var output = '' var moudle = this.resource.split('\\src\\')[1] console.log(moudle) var dir = moudle.replace(/[?&=]/g, '_') var type = 'js' if (moudle.includes('type=style')) { type = 'css' } if (moudle.includes('type=template')) { type = 'html' } if (type == 'html') { let returnContent = content.replace(/]*)>/g // tmp let contentArr = returnContent.split('\n') let resultArr = contentArr.map((item, index) => { if (regInput.test(item)) { item = item.replace(/