uni-app Vite在小程序js文件不编译直接输出导致出错

uni-app Vite在小程序js文件不编译直接输出导致出错

开发环境 版本号 项目创建方式
Windows 10 HBuilderX

操作步骤:

  • 使用Alpha版vite引用单独文件js(import方式)启动小程序

预期结果:

  • 正常编译

实际结果:

  • 无编译直接输出js内容

bug描述:

  • vite在小程序js文件不编译直接输出导致启动后出错,然后手动修改这个js加个空格让其增量编译则js才会编译。

图片 图片


更多关于uni-app Vite在小程序js文件不编译直接输出导致出错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

static中是放置静态资源的,为何要放js呢?

更多关于uni-app Vite在小程序js文件不编译直接输出导致出错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


有什么关系吗?,还是说会排除static下编译或者只有特定目录下会编译?

回复 c***@163.com: static目录是纯静态资源,编译器会把该目录的资源做copy,所以即使js被先编译了,也会因为copy动作,被原来的static里的原始js覆盖掉

这是一个典型的Vite构建缓存问题。当使用Vite开发模式时,如果JS文件内容没有变化,Vite会直接输出缓存中的文件而不重新编译。

问题原因:

  1. Vite的热更新机制会缓存未修改的文件
  2. 小程序环境对JS语法要求较严格,需要经过babel转换
  3. 首次编译后,如果文件内容未改变,Vite认为无需重新编译

解决方案:

  1. 清除缓存重新构建
# 删除node_modules/.vite目录
rm -rf node_modules/.vite
# 或删除dist目录重新构建
  1. 修改vite配置强制编译vite.config.js中:
export default defineConfig({
  build: {
    // 禁用缓存
    rollupOptions: {
      cache: false
    }
  },
  server: {
    // 强制hmr重新加载
    hmr: {
      overlay: false
    }
  }
})
  1. 检查文件导入路径 确保import路径正确,避免相对路径问题:
// 使用正确的相对路径
import utils from './utils/index.js'
// 而不是
import utils from './utils'
  1. 更新依赖版本 检查package.json中相关依赖:
{
  "[@dcloudio](/user/dcloudio)/uni-app": "最新版本",
  "[@dcloudio](/user/dcloudio)/vite-plugin-uni": "最新版本"
}
回到顶部