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

时间:2019-04-26 06:52:11

标签: node.js express graphql graphql-js express-graphql

我正在使用node 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;
}

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

3 个答案:

答案 0 :(得分:0)

尽管这不是最佳实践,但您可以像这样使用global对象:

global.host = host;

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

官方文档global object

答案 1 :(得分:0)

您可以使用global对象,它是Node中的关键字。

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

并在应用程序中的任何位置使用它。

答案 2 :(得分: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中,因为您的历史记录将在那时引用您的秘密