Я использую модуль tough-cookie-filestore
, который сохраняет файлы cookie в локальном файле. При установке request
для использования этого кука-кука-файла требуется, чтобы файл уже был на диске. Поскольку я использую этот кувшин cookie в нескольких модулях, я хочу избежать большого блока кода в верхней части моих модулей, который проверяет, существует ли файл cookie и если он его не создает, и поэтому я сделал модуль initcookie.js
, который делает это.Модуль NodeJs загружен в порядке?
Вопрос мой, это безопасный и хороший способ сделать это? initcookie.init()
гарантирует, что файл существует, но могу ли я быть уверен, что он выполняется до того, как будет выполнен new FileCookieStore(config.cookiePath)
?
var initcookie = require('../initcookie.js').init()
var config = require('../config.js')
var FileCookieStore = require('tough-cookie-filestore')
var request = require('request')
var j = request.jar(new FileCookieStore(config.cookiePath))
request = request.defaults({ jar: j })
Где initcookie.js
является:
var config = require('./config.js')
var fs = require('fs')
// Initialize cookie file which stores the login info
exports.init = function() {
try {
fs.openSync(config.cookiePath, 'r')
} catch (e) {
if (e.code === 'ENOENT') {
// File not found, so make one
fs.writeFileSync(config.cookiePath, '', { flags: 'wx' }, function (err) {
if (err) { throw (err) }
})
} else {
throw (e)
}
}
}
Одним из способов подтверждения этого было бы разместить что-то долгое выполнение/блокировку внутри вашей функции init и посмотреть, все еще вызывается новый файл FileCookieStore (config.cookiePath). –