tellme_0527 2022-12-05 10:21 采纳率: 0%
浏览 22

vite使用了多页面应用模式,打包时alias配置的路径别名报错

vite使用了多页面应用模式,打包时alias配置的路径别名报错
项目结构

img

打包配置
const modelName = process.env.MODEL_NAME || "all";
let inputConfig = {
    ['main']: resolve(__dirname, "src/index.html"),
    ['international']: resolve(__dirname, "src/international/index.html"),
    ['train']: resolve(__dirname, "src/train/index.html"),
};
if(modelName !== 'all')  {
    inputConfig = {
        [modelName]: resolve(__dirname, `src/${modelName}/index.html`) 
    }
}
export default defineConfig({
    plugins: [vue()],
    resolve: {
        alias: {
            "@": resolve("src")
        },
        extensions: ['.js', '.ts', '.vue']
    },
    root: "./src/",
    // 项目部署的基础路径
    base: './',
    // 环境配置
    // mode: 'development',
    // 静态资源服务文件夹
    publicDir: 'public',

    build: {
        // 浏览器兼容性 ‘esnext’ | 'modules'
        target: 'modules',
        //输出路径
        outDir: '../dist',
        // 生成静态资源的存放路径
        assetsDir: '../assets',
        // 启动 / 禁用 CSS 代码拆分
        cssCodeSplit: true,
        // 混淆器,terser构建后文件体积更小
        minify: 'terser',
        //打包前先清空原有打包文件
        emptyOutDir: true,
        // 自定义底层的 Rollup 打包配置
        rollupOptions: {
            input: inputConfig,
            output: {
                chunkFileNames: (chunkInfo) => {
                    let idStr = chunkInfo.facadeModuleId ? chunkInfo.facadeModuleId.toString().split('src/')[1].split('/')[0].toString() : '';
                    return chunkInfo.facadeModuleId ? `${idStr}/js/[name].[hash].js` : `assets/js/[name].[hash].js`;
                },
                entryFileNames: (entryInfo) => {
                    let facadeModuleId = entryInfo.facadeModuleId;
                    let idStr = facadeModuleId.toString().split('src/')[1].split('/')[0].toString();
                    return `${idStr}/js/[name]-[hash].js`;
                },
                assetFileNames: (assetInfo) => {
                    let extType = null;
                    let moduleName = '';
                    if (assetInfo && assetInfo.name && assetInfo.name.includes('/')) {
                        moduleName = assetInfo.name.toString().split('/')[0].toString();
                        let info = assetInfo.name.split('.')
                        extType = info[info.length - 1];
                        if (assetInfo.name.indexOf('assets') != -1) {
                            let assets = assetInfo.name.toString().split('src/')[1].split('/')[0].toString();
                            moduleName = assets;
                        }
                        if (
                            /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/i.test(assetInfo.name)
                        ) {
                            extType = 'media'
                        } else if (/\.(png|jpe?g|gif|svg)(\?.*)?$/.test(assetInfo.name)) {
                            extType = 'img'
                        } else if (/\.(woff2?|eot|ttf|otf)(\?.*)?$/i.test(assetInfo.name)) {
                            extType = 'fonts'
                        } else if (/\.(css|sass|less)(\?.*)?$/i.test(assetInfo.name)) {
                            extType = 'css'
                        }
                    }
                    return `${moduleName || 'assets'}/${extType || '[ext]'}/[name]-[hash][extname]`;
                }
            },
            // 清除console
            terserOptions: {
                compress: {
                    drop_console: true,
                    drop_debugger: true,
                },
            },
        }
    }
})

运行的报错

Cannot find module '@/api/index' or its corresponding type declarations.

我的解答思路和尝试过的方法

dev模式下就正常,build就报这个错,怀疑是ts检测路径报错或者是多页面路径问题

我想要达到的结果

请大家帮忙看一下,如何解决这个路径问题

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-12-05 12:13
    关注
    评论

报告相同问题?

问题事件

  • 修改了问题 12月5日
  • 修改了问题 12月5日
  • 修改了问题 12月5日
  • 创建了问题 12月5日

悬赏问题

  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊
  • ¥15 求多普勒频移瞬时表达式
  • ¥15 如果要做一个老年人平板有哪些需求
  • ¥15 k8s生产配置推荐配置及部署方案
  • ¥15 matlab提取运动物体的坐标
  • ¥15 人大金仓下载,有人知道怎么解决吗
  • ¥15 一个小问题,本人刚入门,哪位可以help
  • ¥30 python安卓开发