Я работаю в graphql, используя node 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;
}
Здесь я могу получить имя хоста. Но как я мог использовать его в любом файле?





Хотя это не лучшая практика, вы можете использовать объект global следующим образом:
global.host = host;
А затем используйте global.host везде, где вам нужно.
Официальные документы глобальный объект
Если имя хоста является статическим значением и чем-то, что вы можете контролировать, я бы предложил использовать переменные среды узла. Есть 2 распространенных способа его использования: 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, так как тогда в вашей истории будут ссылки на ваши секреты.
Не могли бы вы предоставить мне более подробную информацию о втором подходе? Или не могли бы вы предоставить мне какую-нибудь ссылку после того, как я смогу ясно понять?
Да, на медиуме много полезных статей, возможно, эта даст вам больше контекста medium.com/the-node-js-коллекция/…
Я создал файл .env. Не могли бы вы объяснить, как я могу предоставить учетные данные для другого сервера?
Извините, я не совсем уверен, что вы подразумеваете под «отдать для другого сервера», не могли бы вы уточнить это?
Это ссылка - stackoverflow.com/questions/55904884/…
Он показывает undefined, когда я пытаюсь получить доступ к хосту