vue3 vite 项目axios 请求public 里面的json 数据,打包后,访问不了
时间: 2024-09-26 18:08:16 浏览: 54
在 Vue3 和 Vite 项目的构建过程中,如果使用 Axios 发起对 `public` 文件夹中 JSON 文件的请求,在打包(通常指生产环境构建)之后可能会遇到静态资源访问的问题。这主要是因为浏览器的安全策略和 Vite 的配置。
1. **跨域限制**:默认情况下,浏览器会阻止从 `http://localhost` 或者非同源地址访问来自 `public` 文件夹的内容,即使它们是 JSON 文件。你需要设置 CORS(跨源资源共享)头或者使用代理服务器处理这种情况。
- 在 Vite 配置文件 (`vite.config.js`) 中添加一个 `serverMiddleware`,例如:
```javascript
import { createServer } from 'vite'
import axios from 'axios'
export default createServer({
middleware: (ctx) => {
if (ctx.url.includes('/api')) {
ctx.response.set('Access-Control-Allow-Origin', '*')
ctx.response.set('Access-Control-Allow-Methods', ['GET'])
}
return Promise.resolve()
},
})
```
- 或者在 Axios 请求中添加 `withCredentials: true` 来启用跨域请求凭据。
2. **打包路径改变**:在生产环境构建时,Vite 会根据配置生成一个相对短的 URL 前缀。如果你直接用 `http://localhost` 访问,可能需要修改请求 URL 为实际的部署前缀加上 JSON 文件路径。
确保你的生产环境部署配置正确,并按照上述建议检查或调整。另外,你可以查看 Vite 文档(https://vitejs.dev/guide/production-build.html)以获取更详细的部署和配置指南。如果问题依然存在,请确认服务器是否正确地提供了这些静态资源。
阅读全文