如何在已部署的Heroku节点应用程序上获取基本url变量

时间:2018-09-01 16:00:00

标签: javascript node.js heroku

我尝试了以下操作,但不起作用:

console.log(process.env.BASE_URL);   #output: undefined

说我的heroku应用程序的主机名是:https://RyanCameron-app.herokuapp.com

我应该如何在heroku上获取该base_url?

我正在寻找一种解决方案,以避免分别取消注释/注释以下行:

const url = 'https://RyanCameron-app.herokuapp.com/projects/eovendo' //production 
//const url = 'http://localhost:3000'                                //development

这已经变得很烦人了。

3 个答案:

答案 0 :(得分:4)

后端

这将检查您是否处于生产或开发模式,并根据模式分配相应的URL。

const production  = 'https://examplePage.com';
const development = 'http://localhost:3000/';
const url = (process.env.NODE_ENV ? production : development);

说明 如果您在本地主机生产模式上运行,process.env.NODE_ENV将解析为undefined。如果您已部署应用程序生产模式,则返回production

注意:仅仅因为您已经部署了应用程序并不一定意味着您已经更改了NODE_ENV


前端

利用JavaScript窗口提取网址

const url = window.location.origin;

答案 1 :(得分:1)

您可以使用Base URL in JavaScript

// This article: // https://stackoverflow.com/questions/21246818/how-to-get-the-base-url-in-javascript

var base_url = window.location.origin; // "http://stackoverflow.com"

var host = window.location.host; // stackoverflow.com

var pathArray = window.location.pathname.split( '/' ); // ["", "questions", "21246818", "how-to-get-the-base-url-in-javascript"]

答案 2 :(得分:0)

设置配置变量HEROKU_APP_NAME或HOST-很明显。您可以在后端访问它,但也可以将其写到DOM中,并让前端从那里访问它。