使用Mac端口在MAC OS X上安装NodeJS v0.6.12。
win764:node iwaldman$ which node
/opt/local/bin/node
win764:node iwaldman$ node -v
v0.6.12
使用npm install connect安装连接。
写了一个简单的程序,connectServer.js:
var connect = require('connect');
var util = require('util');
function sendJSON(response, obj) {
response.writeHead(200, {'Content-Type':'application/json'});
var objStr = JSON.stringify(obj);
util.debug('SENDJSON: ' + objStr);
response.end(objStr);
}
var server = connect.createServer(
connect.router(function(app){
app.get('/foo', function(req, res){
sendJSON(res, {path: 'foo'});
})
app.get('/bar', function(req, res){
sendJSON(res, {parth: 'bar'});
})
})
);
server.listen(3000);
util.debug('Server running at http://127.0.0.1:3000');
运行节点connectServer.js。
收到以下错误:
win764:node iwaldman$ node connectserver.js
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
TypeError: Object function createServer() {
function app(req, res){ app.handle(req, res); }
utils.merge(app, proto);
utils.merge(app, EventEmitter.prototype);
app.route = '/';
app.stack = [].slice.apply(arguments);
return app;
} has no method 'router'
at Object.<anonymous> (/Users/iwaldman/dev/node/connectserver.js:12:10)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)
at Module.load (module.js:348:31)
at Function._load (module.js:308:12)
at Array.0 (module.js:479:10)
at EventEmitter._tickCallback (node.js:192:40)
任何想法都表示赞赏。
答案 0 :(得分:4)
好吧,很难说因为你看到的教程看起来真的没有使用connect
,但这里有一个使用连接的例子。
function sendJSON(response, obj) {
response.writeHead(200, {'Content-Type':'application/json'});
var objStr = JSON.stringify(obj);
response.end(objStr);
}
function get(path, cb) {
return function(req, res, next) {
if (req.method != 'GET' || req.url != path) return next();
cb(req, res, next);
}
}
var connect = require('connect')
var app = connect()
.use(connect.query())
.use(get('/foo', function(req, res, next) {
sendJSON(res, {path: 'foo'});
}))
.use(get('/bar', function(req, res, next) {
sendJSON(res, {parth: 'bar'});
}))
.listen(3000);
答案 1 :(得分:0)
安装express并稍微重写代码:
var express = require('express');
var util = require('util');
function sendjson(res,obj)
{
res.writeHead(200, {
'Content-Type': 'application/json',
});
var objstr = JSON.stringify(obj);
util.debug('SENDJSON:' + objstr);
res.end(objstr);
}
var app = express();
app.get('/foo', function(req,res) {
sendjson(res, {path:'/foo'});
});
app.get('/bar', function(req,res) {
sendjson(res, {path:'/bar'});
});
app.listen(3000);
util.debug('Server running at http://127.0.0.1:3000');
答案 2 :(得分:0)
我有同样的问题。 “在云中开始移动应用程序开发”的作者Richard Rodger建议我应该使用 dispatch 模块(https://github.com/caolan/dispatch)或安装旧版本的connect ,使用:
npm install git://github.com/senchalabs/connect.git#1.8.6
希望这有帮助! :)