fbf76611d1
问题: - 小程序请求 /static/logo.svg 返回 500 错误 - logo.svg 文件在 src/static/ 目录,但编译后未被复制到输出目录 修复: 1. 在 mini-program/ 根目录创建 static/ 目录 2. 将 logo.svg 复制到 mini-program/static/logo.svg 3. 修改 vite.config.js 添加 publicDir 配置,让 Vite 复制 static 目录 4. 更新图片路径:/static/logo.svg → /logo.svg - pages/splash/index.vue - pages/main/index.vue 效果: - logo.svg 正确编译到 unpackage/dist/dev/mp-weixin/logo.svg - 小程序正常加载 logo 图片 - 不再出现 500 错误
62 lines
1.6 KiB
JavaScript
62 lines
1.6 KiB
JavaScript
import { defineConfig } from 'vite'
|
|
import { resolve } from 'path'
|
|
import uni from '@dcloudio/vite-plugin-uni'
|
|
|
|
const uniPlugin = uni.default || uni
|
|
|
|
const vueCompatPlugin = () => {
|
|
const virtualId = '\0virtual:vue-compat'
|
|
const publicId = 'virtual:vue-compat'
|
|
return {
|
|
name: 'vue-compat-uni',
|
|
resolveId(id) {
|
|
if (id === publicId) return virtualId
|
|
if (id === 'vue') return virtualId
|
|
return null
|
|
},
|
|
load(id) {
|
|
if (id !== virtualId) return null
|
|
return [
|
|
"import * as VueRuntime from 'vue/dist/vue.runtime.esm-bundler.js'",
|
|
"export * from 'vue/dist/vue.runtime.esm-bundler.js'",
|
|
'export default VueRuntime',
|
|
'export const injectHook = () => {}',
|
|
'export const isInSSRComponentSetup = () => false'
|
|
].join('\n')
|
|
}
|
|
}
|
|
}
|
|
|
|
export default defineConfig(({ command }) => {
|
|
const isMpWeixin = process.env.UNI_PLATFORM === 'mp-weixin'
|
|
const inputDir = process.env.UNI_INPUT_DIR || '.'
|
|
const mpEntry = resolve(inputDir, 'main.js')
|
|
const outDir = isMpWeixin
|
|
? (command === 'serve' ? 'unpackage/dist/dev/mp-weixin' : 'unpackage/dist/build/mp-weixin')
|
|
: 'dist'
|
|
return {
|
|
envDir: __dirname,
|
|
publicDir: resolve(__dirname, 'static'),
|
|
server: {
|
|
watch: {
|
|
usePolling: true,
|
|
interval: 100
|
|
},
|
|
hmr: true
|
|
},
|
|
resolve: {
|
|
alias: [
|
|
{ find: /^vue$/, replacement: 'virtual:vue-compat' }
|
|
]
|
|
},
|
|
build: {
|
|
outDir,
|
|
emptyOutDir: false,
|
|
rollupOptions: isMpWeixin
|
|
? { input: mpEntry }
|
|
: undefined
|
|
},
|
|
plugins: [vueCompatPlugin(), uniPlugin()]
|
|
}
|
|
})
|