uni-app vite组件引用资源报错

发布于 1周前 作者 zlyuanteng 来自 Uni-App

uni-app vite组件引用资源报错

信息类别 详细信息
产品分类 uniapp/小程序/微信
操作系统 Windows
版本号 win11
工具版本号 1.06
基础库版本 3.5.5
创建方式 CLI
CLI版本 4.24

操作步骤:

import {  
  goodPublishOrDown,  
  goodDelete  
} from '@/pagesChild/appoint/services/api/commoditybook.js'  
import { getStorageSync } from '@/pagesChild/appoint/utils/custom_storage.js'  

预期结果:

正常引用

实际结果:

无法正常引用

bug描述:

子组件引用:

import {  
  goodPublishOrDown,  
  goodDelete  
} from '@/pagesChild/appoint/services/api/commoditybook.js'  
import { getStorageSync } from '@/pagesChild/appoint/utils/custom_storage.js'  

开发者工具报:

页面【pages/mallorder/components/appoint-pro-bar]错误:  
Error: module 'pagesChild/appoint/services/api/commoditybook.js' is not defined, require args is '../../../pagesChild/appoint/services/api/commoditybook.js'

vue2没问题,vue3有问题


5 回复

你好,信息太少,提供一下可复现的demo工程


vue3不能引用subPackages(分包)里面的js吗

就是分包之间js不能互相引用吗,有什么办法解决,我看vue2能互相引用

回复 i***@163.com: 分包只能引用主包的内容,不能引用其他分包的内容。 但可以试试小程序的分包异步化,相关文档 https://developers.weixin.qq.com/miniprogram/dev/framework/subpackages/basic.html

在使用uni-app结合Vite进行开发时,遇到组件引用资源报错的问题,通常可能与资源路径配置、Vite插件配置或uni-app的特殊处理有关。以下是一些常见的解决方案和相关代码示例,帮助你定位和解决问题。

1. 确认资源路径是否正确

首先,确保你在组件中引用的资源路径是正确的。uni-app在处理资源路径时,有自己的规则,特别是在静态资源(如图片、字体)和动态资源(如通过API获取的数据)方面。

<template>
  <view>
    <image :src="require('@/static/images/logo.png')" />
  </view>
</template>

<script>
export default {
  // 组件逻辑
}
</script>

注意:@ 符号通常代表 src 目录的别名,确保你的构建配置(如vite.config.js)中正确设置了别名。

2. 配置Vite插件处理静态资源

如果Vite默认配置不支持某些类型的静态资源(如SVG),你可能需要配置额外的Vite插件。

// vite.config.js
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import svgLoader from 'vite-svg-loader';

export default defineConfig({
  plugins: [
    vue(),
    svgLoader({ /* 配置选项 */ })
  ],
  resolve: {
    alias: {
      '@': '/src'
    }
  }
});

3. 检查uni-app特殊配置

uni-app在Vite环境下可能需要一些特殊的配置来处理平台差异,如条件编译。

<template>
  <view>
    <!-- #ifdef H5 -->
    <image :src="require('@/static/images/h5-logo.png')" />
    <!-- #endif -->
    <!-- #ifndef H5 -->
    <image :src="require('@/static/images/app-logo.png')" />
    <!-- #endif -->
  </view>
</template>

4. 调试和日志

如果上述方法仍未解决问题,可以尝试在Vite的配置文件中添加更多的日志输出,以便更好地理解资源加载过程中的问题。

// vite.config.js
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';

export default defineConfig({
  plugins: [vue()],
  resolve: {
    alias: {
      '@': '/src'
    }
  },
  server: {
    logLevel: 'info' // 或 'debug' 以获取更多日志信息
  }
});

通过以上步骤,你应该能够定位并解决uni-app结合Vite开发时组件引用资源报错的问题。如果问题依旧存在,建议查阅uni-app和Vite的官方文档,或寻求社区的帮助。

回到顶部