当我运行以下代码时:
var app = require('express')();
var http = require('http').Server(app);
app.get('/', function(req, res){
res.send('<h1>Hello world</h1>');
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
我收到以下错误:
/var/www/html/test.me/public_html/giftcard/index.js:1
rts, require, module, __filename, __dirname) { var app = require('express')();
^
TypeError: object is not a function
at Object.<anonymous> (/var/www/html/test.me/public_html/giftcard/index.js:1:91)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:902:3
此错误是什么意思?表达路径不正确吗?我有一个目录包含 packages.json
、index.js
(上面的文件)和 node_modules
,并且我已经快速安装。错误从何而来?
错误应该在以下行:
var http = require('http').Server(app);
对于您要做的事情,您只需要express
而没有http
const app = require('express')();
app.get('/', function(req, res){
res.send('<h1>Hello world</h1>');
});
app.listen(3000, () => console.log('listening on 3000'));
如果还想使用 http
,请尝试使用以下语法:
const app = require('express')();
const server = require('http').createServer(app);
server.listen(3000);
你为什么要用这个:
var app = require('express')();
var http = require('http').Server(app);`
虽然你可以这样做:
var app = new require('express')();
app.get('/', function(req, res){
res.send('<h1>Hello world</h1>');
});
app.listen(3000, function(){
console.log('listening on *:3000');
});
但是,您的代码在我的节点上完美运行.js.
var app = new require('express')();
var http = require('http').Server(app);
app.get('/', function(req, res){
res.send('<h1>Hello world</h1>');
});
http.listen(3000, function() {
console.log('listening on *:3000')
});
因为我在 Ubuntu 14.04 上使用 nodejs
模块来安装 Node.js,所以我有一个过时的版本。我使用nvm
来安装最新版本的 Node.js以解决错误。