Vue3 TS语法前端配置代理解决跨域问题

在vite.config.ts 中:


export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  server: {
// 跨域的写法
    proxy: {
      '/api': {
        target: 'http://localhost:9999/', // 实际请求地址
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, ""),
       //会把请求时的/api替换成http://localhost:9999/
      },
    },
  },
})

Vue 3 + TypeScript 项目中,遇到 `Failed to fetch dynamically imported module` 或 `failed to load resource: net::err_connection_refused` 错误时,通常与模块加载、网络请求配置或部署方式有关。以下是对该问题的详细分析及解决方案。 ### 动态导入模块失败 在使用动态导入(如 `import()`)进行懒加载时,如果打包后的路径不一致,会导致浏览器无法找到对应的模块文件,从而报错 `Failed to fetch dynamically imported module`。该问题常见于 Vite 构建工具,在部署新版本后页面未刷新的情况下尤为明显[^2]。为解决问题,可以在路由守卫中添加错误处理逻辑: ```ts router.onError((error, to) => { if (error.message.includes(&#39;Failed to fetch dynamically imported module&#39;)) { window.location = to.fullPath; } }); ``` 上述代码会在检测到模块加载失败时自动刷新页面,确保加载最新的资源路径。若项目部署在二级目录下,应将 `to.fullPath` 替换为包含基础路径的完整 URL。 此外,确保模块路径书写正确,包括文件扩展名 `.vue` 和组件命名规范,避免因拼写错误导致加载失败。在使用 `<script setup>` 语法糖时,某些构建环境可能存在兼容性问题,可尝试关闭 ESLint 检测或切换回普通 `<script>` 标签以排查问题[^1]。 ### 网络请求失败(ERR_CONNECTION_REFUSED) 当项目运行时出现 `net::ERR_CONNECTION_REFUSED` 错误,表明浏览器尝试连接服务器但被拒绝。这可能由以下原因造成: - **本地开发服务器未启动**:确保执行了 `npm run dev` 启动开发服务器,并确认终端输出的监听端口(如 `localhost:5173`)与浏览器访问地址一致。 - **API 请求目标配置错误**:检查 Axios 或其他 HTTP 客户端的基础 URL 设置是否指向正确的后端服务地址: ```ts import axios from &#39;axios&#39;; const apiClient = axios.create({ baseURL: &#39;http://localhost:3000&#39;, }); ``` - **限制(CORS)**:若请求地址与当前页面源不同,则需在后端设置适当的 CORS 头信息,允许前端名访问: ```http Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS Access-Control-Allow-Headers: Content-Type, Authorization ``` - **Content Security Policy(CSP)限制**:在 Chrome 扩展或某些部署环境中,CSP 可能会阻止外部脚本加载。可通过调整 `manifest.json` 中的 CSP 配置来放宽限制,但应避免使用 `&#39;unsafe-inline&#39;` 和 `&#39;unsafe-eval&#39;` 以保障安全。 ### 资源加载路径配置 在构建生产环境版本时,静态资源路径配置不当也可能引发加载失败问题。可在 `vite.config.ts` 或 `vue.config.js` 中调整 `base` 配置项,确保其指向正确的资源路径: ```ts export default defineConfig({ base: &#39;./&#39;, // 或指定绝对路径如 &#39;/my-app/&#39; }); ``` 此外,清理缓存并重新安装依赖有助于排除因 Node.js 缓存或损坏依赖包引起的异常情况: ```bash rm -rf node_modules package-lock.json npm install ``` ### 调试建议 打开浏览器开发者工具(F12),切换至 Network 标签页,刷新页面并观察具体哪些资源加载失败。点击对应请求条目,查看请求头(Headers)、响应状态码及内容,有助于进一步定位问题根源。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值