我在 nodejs 中有一个自签名证书。当我添加了证书密钥并尝试运行它时,节点给出了如下所示的错误

Posted

技术标签:

【中文标题】我在 nodejs 中有一个自签名证书。当我添加了证书密钥并尝试运行它时,节点给出了如下所示的错误【英文标题】:I have a self signed certificate in nodejs. When I have added the certificate key and when i try to run it the node is giving the error shown below 【发布时间】:2014-11-09 15:40:18 【问题描述】:
var express = require('express')
    //Required for cluster 
    ,
    cluster = require('cluster')
    //Required for countting the cpu cores 
    ,
    numCPUs = require('os').cpus().length,
    socketio = require('socket.io'),
    routes = require('./routes'),
    user = require('./routes/user'),
    https = require('https'),
    connect = require('connect'),
    fs = require('fs'),
    app = connect(),
    sslOptions, server, port = 1111,
    path = require('path');

var app = module.exports = express.createServer();
app.use(form(
    keepExtensions: true
));


sslOptions = 
    key: fs.readFileSync('./ssl/server.key'),
    cert: fs.readFileSync('./ssl/server.crt')
;

if (cluster.isMaster) 

    for (var i = 1; i < numCPUs; ++i)
        console.log('hi');
    cluster.fork();
    cluster.on('online', function(worker) 
        console.log("The Master is forked");
    );
    cluster.on('exit', function(worker, code, signal) 
        logger.log('worker ' + worker.process.pid + ' died');
    );
 else 
    var app = express();
    var server = require('https').createServer(app);

    // all environments
    // app.set('port', process.env.PORT || 1111);
    app.set('views', __dirname + '/views');
    app.set('view engine', 'ejs');
    app.use(express.favicon());
    app.use(express.logger('dev'));
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.static(path.join(__dirname, 'public')));

    // development only
    if ('development' == app.get('env')) 
        app.use(express.errorHandler());
    

    app.get('/', routes.index);
    app.get('/users', user.list);

    server = https.createServer(sslOptions, app).listen(port, function() 
        console.log('Listening on https://' + server.address().address + ':' + server.address().port);
    );

我得到的错误是

警告:express.createServer() 已弃用,express 应用程序不再从 http.Server 继承, 请用: var express = require("express"); var app = express(); /home/lilac/revanth/app.js:25 app.use(form( keepExtensions: true )); ^ ReferenceError:未定义表单 在对象。 (/home/lilac/revanth/app.js:25:9) 在 Module._compile (module.js:456:26) 在 Object.Module._extensions..js (module.js:474:10) 在 Module.load (module.js:356:32) 在 Function.Module._load (module.js:312:12) 在 Function.Module.runMain (module.js:497:10) 启动时 (node.js:119:16) 在 node.js:906:3

【问题讨论】:

【参考方案1】:

您没有在任何地方定义变量 form

您还应该将express.createServer() 替换为express()

【讨论】:

我已经替换了它并且它没有给出任何错误,而是代码没有进一步移动。 [lilac@LILAC revanth]$ node app.js Master is fork hi info - socket.io 启动 Express 服务器监听 1111 端口 “代码没有进一步移动”是什么意思?您还没有编写任何其他发生的代码。正如您设置的那样,该进程仍应处于打开状态并侦听端口 1111 上的请求。

以上是关于我在 nodejs 中有一个自签名证书。当我添加了证书密钥并尝试运行它时,节点给出了如下所示的错误的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS Mongoose抛出一个错误。"证书链中的自签名证书"

在 Node JS 中为 WebSocket (ws) 使用自签名 CA 证书

将自签名证书链添加到密钥库

添加自签名证书 OkHttpClient

在节点JS中为WebSocket(ws)使用自签名CA证书

信任来自 IIS 的自签名证书