Nodejs has no method 'createServer'

Nodejs has no method 'createServer’

express 版本是3.5 然后serverjs代码如下: var express = require(‘express’);
var app = module.exports = express.createServer();

app.set(‘view engine’,‘ejs’); app.set(‘views’,__dirname+"/views"); app.set(‘view option’,{layout:false});

app.get(’/’,function(req,res){ res.render(‘index’); }); app.linten(3000); 运行以后就报错了 提示说:has no method ‘createServer’


5 回复

帖子内容

标题:Nodejs has no method ‘createServer’

内容如下:

// server.js 文件
var express = require('express');

// 使用 express.createServer() 创建服务器
var app = module.exports = express.createServer();

你提到的错误信息 has no method 'createServer' 是因为 Express 3.x 版本中已经移除了 createServer() 方法。在 Express 3.x 及更高版本中,你应该使用 Node.js 的内置模块 httphttps 来创建 HTTP 服务器,并将 Express 应用挂载到这个服务器上。

示例代码

以下是更新后的代码,展示了如何使用 http 模块来创建服务器并将其与 Express 应用程序关联起来:

// server.js 文件
var express = require('express');
var http = require('http');

// 创建 Express 应用实例
var app = express();

// 设置视图引擎和其他配置
app.set('view engine', 'ejs');
app.set('views', __dirname + "/views");
app.set('view options', { layout: false });

// 定义路由
app.get('/', function (req, res) {
    res.render('index');
});

// 创建 HTTP 服务器并将 Express 应用挂载到该服务器
var server = http.createServer(app);

// 监听端口 3000
server.listen(3000, function () {
    console.log("Express server listening on port %d in %s mode", 3000, app.settings.env);
});

解释

  1. 引入模块:首先引入 expresshttp 模块。
  2. 创建应用:通过 express() 创建一个 Express 应用实例,而不是使用 express.createServer()
  3. 配置应用:设置视图引擎、视图目录等。
  4. 定义路由:设置路由处理函数。
  5. 创建服务器:使用 http.createServer() 创建一个 HTTP 服务器,并将 Express 应用作为参数传递给它。
  6. 监听端口:启动服务器并监听指定端口(例如 3000)。

这样修改之后,你的代码应该可以正常运行而不会出现 has no method 'createServer' 错误了。


有点久没弄express了,看了一下官网,你用的好象是旧的API(跟我印象中的比较接近)

官网给的示例如下

var express = require('express');

var app = express();

app.get(’/’, function(req, res){

res.send(‘hello world’);

});

app.listen(3000);

http.createServer

+1 express下貌似一直都没有createServer的方法吧~

对于您提到的问题,“Node.js has no method ‘createServer’”,问题出在您使用的是较旧版本的Express(3.5版本)。在Express 4.x版本之后,express.createServer() 方法已经被移除。您需要使用 httphttps 模块来创建服务器,并将Express应用挂接到这个服务器上。

以下是如何更新您的代码以适应新版Express的方式:

  1. 首先安装最新版本的Express(如果还没有安装的话):

    npm install express
    
  2. 更新您的server.js文件代码如下:

const express = require('express');
const http = require('http');

// 创建一个Express应用
const app = express();

// 设置视图引擎和其他配置
app.set('view engine', 'ejs');
app.set('views', __dirname + "/views");
app.set('view options', { layout: false });

// 定义路由
app.get('/', function(req, res) {
    res.render('index');
});

// 创建HTTP服务器并将Express应用挂载到该服务器
const server = http.createServer(app);

// 监听端口
server.listen(3000, () => {
    console.log('App is listening on port 3000');
});

以上代码展示了如何正确设置Express应用并将其挂载到HTTP服务器上。通过这种方式,您可以避免因createServer方法不存在而导致的错误。另外,请确保您的项目中安装了EJS模板引擎(如果需要的话),可以通过运行npm install ejs来完成。

回到顶部