【问题标题】:Heroku adding 'undefined' to BASE_URL environment variableHeroku 将“未定义”添加到 BASE_URL 环境变量
【发布时间】:2019-10-06 23:35:41
【问题描述】:

尝试部署一个 vuejs,将应用程序快递到 heroku。该应用程序显示,但无法访问 api,因为 heroku 似乎在 base_url 中间添加了“未定义”。一切都按预期在本地运行。

这是我的 heroku 配置变量: BASE_URL: https://goore-todos.herokuapp.com/

这里是 Vuejs 组件 api 请求:

fetchTodo () {
  let uri = process.env.BASE_URL + '/api/all';
  axios.get(uri).then((response) => {
    this.todos = response.data;
  });
},

如上所述,这在本地有效。

控制台显示以下错误: VM71:1 GET https://goore-todos.herokuapp.com/undefined/api/all 404(未找到)

视图是空的。

通过 Postman 向 https://goore-todos.herokuapp.com/api/ 发出的请求按预期工作。

【问题讨论】:

    标签: express heroku environment-variables axios base-url


    【解决方案1】:

    在这种情况下,看起来 process.env.BASE_URL 是未定义的。由于未定义,因此您尝试访问的 url 被认为是相对的。这意味着它使用您当前的域并将路径附加到它。

    如果您的前端和后端在同一个域上运行,则没有理由尝试将 API url 作为变量传递,因为您可以使用相对 URL。

    如果您想通过环境变量访问 URL,使用前端应用程序会有点棘手。 Vue 应用程序在用户的浏览器上运行,而不是在您的服务器上,因此您无法直接访问它。

    【讨论】:

    • 使用相对网址有效。谢谢!我仍然想知道当我在 heroku 中设置 process.env.BASE_URL 以及在从 .env 读取的本地环境中工作时,它是如何未定义的
    • @user2799827 通常需要在构建应用程序时指定前端应用程序的环境变量。当您的应用程序在其他人的浏览器上时,它当然无法从您的服务器读取环境变量
    • @user27 一些 JavaScript 应用程序在编译时只有环境变量,你可能已经重新触发了应用程序的部署
    猜你喜欢
    • 2019-01-08
    • 1970-01-01
    • 2019-07-24
    • 2015-12-25
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 2023-02-24
    • 2020-08-09
    相关资源
    最近更新 更多