Node.js Сервер https не работает, когда я разделяю его на два файла - PullRequest
0 голосов
/ 03 марта 2020

У меня есть node.js https сервер, который работает, когда он находится в одном приложении. js файле, но когда я делю его на 2 файла, он больше не работает. Я не знаю, почему ..

Это приложение. js работает

const https = require('https')
const express = require('express')

const app = express()

const server = https.createServer({
    cert: fs.readFileSync('/etc/letsencrypt/live/www.4evergaming.com/cert.pem'),
    key: fs.readFileSync('/etc/letsencrypt/live/www.4evergaming.com/privkey.pem'),
}, app)

server.listen(443)

Но когда я разделяю его на 2 файла приложение. js и сертификат. js он больше не работает

приложение. js

const https = require('https')
const express = require('express')
const certificate = require('./certificate.js')

const app = express()

const server = https.createServer({
    certificate.cert,
    certificate.key,
}, app)

server.listen(443)

сертификат. js

const fs = require('fs')

var certificate = {
    cert: fs.readFileSync('/etc/letsencrypt/live/www.4evergaming.com/cert.pem'),
    key: fs.readFileSync('/etc/letsencrypt/live/www.4evergaming.com/privkey.pem'),
}

exports.certificate = certificate

Я получаю эту синтаксическую ошибку

certificate.cert
           ^
SyntaxError: Unexpected token '.'

Я также пытался это

const server = https.createServer(certificate, app)

И я получаю эту ошибку

Ошибка подключения: ошибка при установлении соединения: net :: ERR_SSL_VERSION_OR_CIPHER_MISMATCH

Итак, когда все было в app. js файл работал отлично. Но когда я попытался разделить его на 2 файла, он больше не работает ..

1 Ответ

3 голосов
/ 03 марта 2020

Это синтаксическая ошибка JS, она не имеет отношения к тому, что ваше приложение разбито на два файла.

Этот объект недопустим:

{
    certificate.cert, // SyntaxError: Unexpected token '.'
    certificate.key,  //SyntaxError: Unexpected token '.'
}

Попробуйте это:

https.createServer({
    cert : certificate.cert,
    key : certificate.key,
})

РЕДАКТИРОВАТЬ: включая комментарии @StephaneVanraes:

Вы также неправильно импортируете сертификат, попробуйте const { certificate } = require('./certificate.js')

Кроме того, так как имена свойств в обоих случаях вы можете использовать оператор распространения: https.createServer({ ...certificate })

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...