Поместите все учетные данные в файл .json

Я новичок в Javascript, и я все еще не понимаю, что такое javascript и используется файл json. Я работаю в одном из своих офисных проектов по отправке сообщения, я завершил весь код на бэкенде и во внешнем интерфейсе, но когда код просматривался с моим руководителем проекта, он сказал поместить все учетные данные в файл json . Чтобы отправить сообщение / почту, я использую nodemailer из node.js

Вот учетные данные, которые я должен поместить в файл json

const transporter = mail.createTransport({ //unresolved
  service: 'Gmail',
  host: 'smtp.gmail.com',
  auth: {
    user: '[email protected]',
    pass: 'xxxxxx'
  }
});

Я поместил его в файл json, но когда я вызываю его в своем файле javascript, я не знаю, как его назвать, я пытаюсь импортировать файл json, но я просто получаю ошибку, потому что это может кто-то мне помочь, именно мой вопрос в том, как я могу записать учетные данные в файл json и как я использую их в своем javascript? Спасибо


person Marvin Paulus    schedule 11.08.2020    source источник
comment
Распространенный и безопасный способ справиться с этим - использовать файл .env и прочитать его в среде узла. Популярной библиотекой для этого является dotenv.   -  person dillon    schedule 11.08.2020


Ответы (4)


Во-первых, в JSON есть нет const. const происходит от JS. Если вы хотите сохранить свои учетные данные в файле JSON, он будет содержать что-то вроде этого:

{
  "service": "Gmail",
  "host": "smtp.gmail.com",
  "auth": {
    "user": "[email protected]",
    "pass": "xxxxx"
  }
}

кроме того, нужны двойные кавычки, а не одинарные.

После этого все, что вам нужно сделать, это потребовать его.

const credentials = require('./jsonCredentials.json');
person illiteratewriter    schedule 11.08.2020

Вам следует изучить использование dotenv

Вы можете использовать это так

// this will find the .env file at the root of your project
// and parse the entries into key/value pairs on the `process.env` object
require('dotenv').config()

const transporter = mail.createTransport({ //unresolved
  service: 'Gmail',
  host: 'smtp.gmail.com',
  auth: {
    user: process.env.MAIL_USER,
    pass: process.env.MAIL_PASS
  }
});

Создайте .env файл в корне вашего проекта

// .env

[email protected]
MAIL_PASS=secret-password

Кроме того, вы должны убедиться, что это не относится к вашей системе контроля версий.
Если вы используете git, создайте .gitignore и убедитесь, что у вас есть запись для .env

// .gitignore

.env
person dillon    schedule 11.08.2020
comment
Это тоже было бы моим предложением. Также отлично работает как шаблон для скрытия ключей API и прочего. - person Jacob; 11.08.2020
comment
Где мне сохранить файл .env? Если я хочу создать его? - person Marvin Paulus; 11.08.2020
comment
Спасибо за предложение @dillon, моя проблема решена, я узнаю о .env - person Marvin Paulus; 11.08.2020
comment
@MarvinPaulus .env обычно находится в корне проекта, то есть на том же уровне, что и package.json. - person Jacob; 11.08.2020

Во-первых, вы можете импортировать содержимое файла с помощью fs библиотечного метода под названием fs.readFileSync(filePath).

Затем вы анализируете содержимое в объект JSON с помощью метода JSON.parse(content).

Оттуда вы можете получить содержимое JSON как объект, и теперь вы можете использовать его в своем createTransport вызове метода.

person Yee Hui Poh    schedule 11.08.2020
comment
Можете ли вы порекомендовать мне любую ссылку в качестве ссылки? Я не знаю про библиотеку fs - person Marvin Paulus; 11.08.2020
comment
FS readFileSync: nodejs.org/api/fs.html#fs_fs_readfilesync_path_options: JSON a href = "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse" rel = "nofollow noreferrer"> developer.mozilla.org/en-US/docs / Web / JavaScript / Reference / - person Yee Hui Poh; 11.08.2020
comment
Кроме того, как уже упоминалось, использование env будет лучше. Вы можете выполнить поиск в библиотеке dotenv, чтобы вставить файл .env в объект process.env. См. Следующую документацию: npmjs.com/package/dotenv - person Yee Hui Poh; 11.08.2020
comment
Спасибо @Yee Hui Poh, моя проблема была решена, немного по-другому, я узнаю о библиотеке fs, может она пригодится для моего следующего проекта. Спасибо - person Marvin Paulus; 11.08.2020

Я просто хочу добавить, что рекомендую использовать файлы .env, которые более безопасны.

Но чтобы ответить на ваш вопрос, поскольку я предполагаю, что вы используете ReactJS, вы можете сделать что-то вроде этого:

config.js

export default const config = {
  service: 'Gmail',
  host: 'smtp.gmail.com',
  auth: {
    user: '[email protected]',
    pass: 'xxxxxx'
  }
}

Затем просто импортируйте, чтобы использовать его

import config from './config.js'

function myFunction()
{
  const transporter = mail.createTransport(config);
}
person polcats    schedule 11.08.2020
comment
вы не можете записать const в файле JSON. Вы просто помещаете данные JS в файл с расширением .json. - person illiteratewriter; 11.08.2020
comment
Итак, я должен добавить код экспорта по умолчанию над файлом json? - person Marvin Paulus; 11.08.2020
comment
Спасибо за @illiteratewriter, я его обновил. - person polcats; 11.08.2020
comment
@illiteratewriter, я поместил все данные JS в файл .json, но как я могу использовать эти данные в моем файле js, который в моем файле js есть код для подключения службы nodemailer? - person Marvin Paulus; 11.08.2020
comment
Вам нужно будет его импортировать. Как и во втором блоке кода выше. - person polcats; 11.08.2020
comment
Итак, мне нужно экспортировать файл json, а затем я могу импортировать его в свой файл javascript? - person Marvin Paulus; 11.08.2020
comment
Хорошо, спасибо @polcats, и моя проблема решена, но немного по-другому. Большое тебе спасибо - person Marvin Paulus; 11.08.2020
comment
И @illiteratewriter тоже спасибо, моя проблема решена - person Marvin Paulus; 11.08.2020