我是node.js的新手。我使用以下代码。我已安装快速模块,已安装相关文件。
var express = require('express')
var app = express.createServer()
app.listen(8000)
var tweets = []
app.get('/', function(req, res) {
res.send('Welcome to Node Twitter')
})
app.post('/send', express.bodyParser(), function(req, res) {
if (req.body && req.body.tweet) {
tweets.push(req.body.tweet)
res.send({status:"ok", message:"Tweet received"})
} else {
//no tweet?
res.send({status:"nok", message:"No tweet received"})
}
})
app.get('/tweets', function(req,res) {
res.send(tweets)
})
我收到以下错误。
var app = function(req, res, next) {
app.handle(req, res, next);
};
mixin(app, proto);
mixin(app, EventEmitter.prototype);
app.request = { __proto__: req, app: app };
app.response = { __proto__: res, app: app };
app.init();
return app;
has no method 'createServer'
at Object.<anonymous> (D:\ProgramFiles\Nodejs\node_modules\twitter.js:3:19)
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:906:3
当我将文件放在modules文件夹之外时会发生这种情况。当我把它放在其他地方时,它也找不到该模块并返回以下错误。
module.js:340
throw err;
^
Error: Cannot find module 'express'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (D:\NodeApp\twitter.js:1:77)
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)
如何解决这个问题?
答案 0 :(得分:3)
假设在评论中建议使用@JoakimM的新版Express,您可能希望:
var app = express()
声明以使用新语法npm install body-parser --save
获取Express 4.0不再附带的新的身体解析器中间件(参见:migrating from 3.x to 4.x docs)app.use
以便express知道新的中间件express.bodyparser
路径app.post('/send'
参数
app.listen
移至底部。也许这就是迷信......但是我把它放在那里。以上结果,在我的系统上工作:
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
var tweets = []
app.use(bodyParser())
app.get('/', function(req, res) {
res.send('Welcome to Node Twitter')
})
app.post('/send', function(req, res) {
if (req.body && req.body.tweet) {
tweets.push(req.body.tweet)
res.send({status:"ok", message:"Tweet received"})
} else {
//no tweet?
res.send({status:"nok", message:"No tweet received"})
}
})
app.get('/tweets', function(req,res) {
res.send(tweets)
})
app.listen(8000)