如何全局设置服务器名称或主机名并在任何文件中使用它?

问题描述 投票:0回答:3

我正在使用节点js在graphql中工作。我想获取服务器的主机名,并在文件的任何位置使用它。

这是我的代码:

app.use('/api',graphqlHTTP((req,res)=>({

    context:{
      oauth_token:req.oauth_token,
      host : req.headers['host'],
      ip: req.ip
    },
    schema,
    graphiql: true,       
})));

我通过解析器在模式文件中访问它。喜欢:

resolve: (parent, args, context, resolveInfo) => {
        host = context.host;
}

在这里我可以获取主机名。但我怎么能在任何文件中使用它?

node.js express graphql graphql-js express-graphql
3个回答
0
投票

如果主机名是静态值并且您可以控制,我建议使用节点环境变量。有两种常用的方法:1。命令行2. .env文件

1)简单地用等号表示变量的名称,然后表示值本身。之后启动节点服务器

HOST=localhost node server.js

然后你可以在你的应用程序中使用它,如下所示:

// server.js
const host = process.env.HOST;

2)在应用程序的根目录中创建一个.env文件并在那里设置变量:

HOST=localhost
PORT=8080
API_KEY=123123

我个人更喜欢第二个,因为你只需设置一次,每次启动服务器时都不需要在控制台中输入它。只是不要忘记将它包含在你的.gitignore中,因为你的历史将引用你的秘密


0
投票

虽然这不是最好的做法,你可以像这样使用global对象:

global.host = host;

然后在任何需要的地方使用global.host

官方文档global object


0
投票

您可以使用在Node中为关键字的global对象。

global.hostname = req.headers['host']

并在app中的任何地方使用它。

© www.soinside.com 2019 - 2024. All rights reserved.