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会直接输出缓存中的文件而不重新编译。
问题原因:
- Vite的热更新机制会缓存未修改的文件
- 小程序环境对JS语法要求较严格,需要经过babel转换
- 首次编译后,如果文件内容未改变,Vite认为无需重新编译
解决方案:
- 清除缓存重新构建
# 删除node_modules/.vite目录
rm -rf node_modules/.vite
# 或删除dist目录重新构建
- 修改vite配置强制编译
在
vite.config.js中:
export default defineConfig({
build: {
// 禁用缓存
rollupOptions: {
cache: false
}
},
server: {
// 强制hmr重新加载
hmr: {
overlay: false
}
}
})
- 检查文件导入路径 确保import路径正确,避免相对路径问题:
// 使用正确的相对路径
import utils from './utils/index.js'
// 而不是
import utils from './utils'
- 更新依赖版本 检查package.json中相关依赖:
{
"[@dcloudio](/user/dcloudio)/uni-app": "最新版本",
"[@dcloudio](/user/dcloudio)/vite-plugin-uni": "最新版本"
}

