node.js - 在 Nodejs Express 中运行 https 服务器时出现 ERR_SSL_PROTOCOL_ERROR 浏览器错误消息

标签 node.js https express

我有许多使用下面的代码在 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/

相关文章:

node.js - 代理来自安全应用程序的请求

node.js - Node 红色模块的底层代码

html - HTTPS 迁移

javascript - Node/Express 未将更新的公司信息保存到数据库

javascript - 使用 Express 和 Node.js 的谷歌地图 API

javascript - VPS 上的 Nodejs 仅在我的网络上运行

javascript - 使用 Puppeteer 下载文件时 Chrome 下载错误

javascript - 为什么异步函数优于同步函数?

android - 我如何告诉 Android Volley 中的 TLS 版本

java - Mule ESB 在服务器上部署时不接受 SSL 证书,但在本地开发机器上运行良好