Как установить имя сервера или имя хоста глобально и использовать его в любом файле? - PullRequest
0 голосов
/ 26 апреля 2019

Я работаю в graphql, используя узел js. Я хочу получить имя хоста сервера и использовать его в любом месте файла.

вот мой код:

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 голосов
/ 26 апреля 2019

Вы можете использовать global объект, который является ключевым словом в Node.

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

и используйте его в любом месте приложения.

0 голосов
/ 26 апреля 2019

Если имя хоста является статическим значением и находится под вашим контролем, я бы предложил использовать переменные среды узла.Существует два распространенных способа его использования: 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 голосов
/ 26 апреля 2019

Хотя это не лучшая практика, вы можете использовать global объект, подобный этому:

global.host = host;

А затем используйте global.host там, где вам нужно.

Официальные документы Глобальный объект

...