我有许多使用下面的代码在 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}"
但是,当尝试使用此代码创建新应用程序时,我在启动 https 服务器时看到 ERR_SSL_PROTOCOL_ERROR。知道是什么导致了这个问题吗?
最佳答案
我发现这是从 Express 2.5.8 迁移到 Express 3(特别是 3.0.0beta4)时引起的。创建新项目时,从 npm 拉取的版本已更改为版本 3 系列。尽管在运行 express --version
时该模块被标记为“beta”,但该版本是运行 npm installexpress
时安装的版本。更改的详细信息概述 here .
为了解决我的情况,我使用了以下代码:
const fs = require("fs");
const https = require("https");
const express = require("express");
const keysDir = "keys/";
const options = {
key : fs.readFileSync(keysDir + "privatekey.pem"),
ca : fs.readFileSync(keysDir + "certrequest.csr"),
cert : fs.readFileSync(keysDir + "certificate.pem")
};
const app = express();
https.createServer(options, app).listen(3000);
关于node.js - 在 Nodejs Express 中运行 https 服务器时出现 ERR_SSL_PROTOCOL_ERROR 浏览器错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11234306/