在nodejs express中运行https服务器时,ERR_SSL_PROTOCOL_ERROR浏览器错误消息

我使用下面的代码在Express上运行了许多nodejs应用程序。 他们都运行良好使用代码类似于以下内容:

fs = require 'fs' https = require 'https' express = require 'express' server_port = 3000 keys_dir = 'keys/' server_options = { key : fs.readFileSync(keys_dir + 'privatekey.pem'), cert : fs.readFileSync(keys_dir + 'certificate.pem') } app = express.createServer(server_options) app.listen server_port console.log "HTTPS Server started on port #{server_port}" 

但是,当尝试使用此代码创build新应用程序时,在启动https服务器时会看到一个ERR_SSL_PROTOCOL_ERROR。 任何想法是什么导致这个问题?

我发现是从快速2.5.8移到expression3 – 特别是3.0.0beta4引起的。 当创build一个新的项目时,从npm中取出的版本已经变成了版本3系列。 即使模块在运行express --version时标记为“beta” express --version version版本是运行npm install express时现在安装的版本。 这里概述了这些变化的细节。

为了解决这个问题,我使用了下面的代码:

 fs = require 'fs' https = require 'https' express = require "express" server_port = 3000 keys_dir = 'keys/' server_options = { key : fs.readFileSync(keys_dir + 'privatekey.pem'), ca : fs.readFileSync(keys_dir + 'certrequest.csr'), cert : fs.readFileSync(keys_dir + 'certificate.pem') } app = express() https.createServer(server_options,app).listen(server_port)