I have this node.js https server that works when it is in one app.js file but when I split it in 2 files it doesn’t work anymore. I don’t know why..
This app.js works
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)
But when I separate it in 2 files app.js and certificate.js it doesn’t work anymore
app.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)
certificate.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
I’m getting this syntax error
certificate.cert
^
SyntaxError: Unexpected token '.'
I also tried to to this
const server = https.createServer(certificate, app)
And I was getting this error
connection failed: Error in connection establishment: net::ERR_SSL_VERSION_OR_CIPHER_MISMATCH
So when it was all in app.js file it worked perfectly. But when I tried to separate it in 2 files it doesn’t work anymore..
Advertisement
Answer
It’s a JS syntax error, it has nothing to do with your app being split in two files.
This object is invalid :
{
certificate.cert, // SyntaxError: Unexpected token '.'
certificate.key, //SyntaxError: Unexpected token '.'
}
Try this :
https.createServer({
cert : certificate.cert,
key : certificate.key,
})
EDIT : including @StephaneVanraes comments :
You are also importing the certificate wrong, try const { certificate } = require('./certificate.js')
Also, since the property names are the same in both cases you could use the spread operator here: https.createServer({ ...certificate })