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

これは、エクスプレス2.5.8からエクスプレス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 に答える