【发布时间】:2019-01-30 17:00:40
【问题描述】:
我正在我的节点应用程序的后端构建一个 graphql 包装器。我需要让 api 域正确。
很难用谷歌搜索这句话。
const baseURL = `http://localhost:8001/api`
我可以在本地运行它,但是在我部署我的代码后它将无法工作,因为域不同。设置 baseURL 变量的方法有哪些?
【问题讨论】:
我正在我的节点应用程序的后端构建一个 graphql 包装器。我需要让 api 域正确。
很难用谷歌搜索这句话。
const baseURL = `http://localhost:8001/api`
我可以在本地运行它,但是在我部署我的代码后它将无法工作,因为域不同。设置 baseURL 变量的方法有哪些?
【问题讨论】:
有几种方法可以实现这一点。
方法一: 您可以使用标题属性
var host = req.get('host');
但这只会返回域,在你的情况下
http://localhost:8001/
所以这可能无法实现您的目标。
方法二: 在根目录下创建.env文件,然后就可以使用dotenv包访问baseurl了。
.env 文件中的内容
BASEURL = http://localhost:8001/api
现在在你想访问的任何文件中,首先使用 npm 安装 dotenv 包,然后使用以下语法要求该 dotenv 包
require('dotenv').config();
在你的函数中,使用这个语法从 .env 文件中获取 baseurl
const baseURL = process.env.BASEURL;
【讨论】:
使用此标头属性。您可以通过这种方式识别域。
var host = req.get('host');
var origin = req.get('origin');
或者
var host = req.headers.host;
var origin = req.headers.origin;
【讨论】:
var host = req.get('host');
主机返回基本 URL,如 (http://localhost:8001/) 或使用域 然后返回域名。
我已经将主机与“api”连接起来。
const baseURL = host + 'api';
【讨论】: