3

我使用下面的代码在 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。知道是什么导致了这个问题吗?

4

1 回答 1

1

我发现这是从 express 2.5.8 移动到 express 3 - 特别是 3.0.0beta4 时引起的。在创建新项目时,从 npm 中提取的版本已更改为版本 3 系列。即使在您运行express --version此版本时该模块被标记为“测试版”,但现在运行时安装的是npm install express. 此处概述了更改的详细信息。

为了解决我的情况,我使用了以下代码:

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);
于 2012-06-27T20:24:56.287 回答