node.js - VueJS - 用于构建的 vue.config.js 代理配置

标签 node.js vue.js proxy cross-domain

我目前在 vue.config.js 中使用 devServer{proxy:{...}} 为 api 调用配置代理,以避免我的应用程序中出现 CORS 问题。当我在本地主机上运行 npm run serve 时它工作正常。

现在我需要将我的应用程序部署到主机,所以我运行 npm run build,更改我的 Ajax 调用的 url,但它没有运行...所以我真正需要的是配置我的部署(构建)代理,而不是 devServer。

正确的做法是什么?

我已经尝试过: server{proxy:{...}}build{proxy:{...}},但是在运行 npm run build 时不允许使用它们

谢谢!

最佳答案

您可以尝试另一种方法,将 API URL 添加到 .env 文件

如果您使用的是 Vue CLI,您可以创建 .env.development.env.production 文件,并将 API URL 用于开发和生产,例如:

.env.development

VUE_APP_API_URL=http://localhost:8080/api

.env.production

VUE_APP_API_URL=http://myapp.com/api

在您的项目文件中,您可以通过输入 VUE_APP_ 关键字来访问变量;

用于发出 api 请求的文件

const url = process.env.VUE_APP_API_URL
const res = axios.get(url, config).then (...)
                                  .catch(...)

您可以从 Vue's official docs 中寻找更多信息

为了处理 CORS 问题,我可以给你一些提示。

  1. 将您的应用划分为名为服务器和客户端的包
  2. 将与 vuejs 相关的所有内容移至 client 文件夹
  3. 将 server.js 移动到服务器文件夹
  4. 在 server.js 中实现 cardconnect
  5. 通过 expressjs 创建一个 nodejs api 并将 cardconnect 逻辑移动到 Controller (端点)
  6. 使用通过 vue.js 实现 cardconnect 的 nodejs api(这将解决 cors 问题,因为您不从 vuejs 发出请求,而是通过 node.js 触发 cardconnect 实现)
  7. 使用您的 Node.js 服务器为 Vue 应用程序提供服务

关于node.js - VueJS - 用于构建的 vue.config.js 代理配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55636271/

相关文章:

vue.js - 在 vue.js 中,有关计算属性的错误

django - 无法在 Django 中将域从 example.com 重定向到 www.example.com

node.js - 无法使用 StrongLoop Arc 连接到 StrongLoop PM

node.js - `isomorphic-fetch` 和 `isomorphic-unfetch` npm 包有什么区别

javascript - Vue.JS + webpack 构建事件发射问题

由公共(public)热点引起的 HTTP 重定向

c# cefsharp 浏览器尝试设置代理

javascript - 将 Controller 变量传递给 Express/Node.js 中的 View

node.js - 参数列表后缺少 Node )

node.js - 如何在Windows上后台运行Vue应用程序