Tag: koa

下午摩根看不起

我有一个非常简单的Koa应用程序: var app = module.exports = require("koa")(); app.use(function *(){ this.body = "Koa says Hi!"; }); var port = process.env.PORT || (process.argv[2] || 3000); port = (typeof port === "number") ? port : 3000; app.listen(port); console.log("Application started. Listening on port:" + port); 我用这样的摩卡和超级特质来testing var app = require("../"); var request = require("supertest").agent(app.listen()); describe("Our amazing site", function () […]

用koa.js显示一个静态html文件

我想要做的是在索引路由(即localhost:3000)被调用时提供index.html文件。 我使用koa路由器进行路由,所以我的路由如下所示: app.all("/", function * (next){ //Send the file here }); 我试图使用koa静态像这样: var serve = require('koa-static'); app.all("/", function * (next){ serve("index.html"); }); 但是这没有用。 然后我试图使用co-views(我现在把html文件放在公共目录中): var views = require("co-views"); var render = views("public"); app.all("/", function * (next){ this.status = 200; this.body = yield render("index.html"); }); 但是这没有用。 那么谁能告诉我我要做什么?

forEach在Node.js中使用生成器

我正在使用Koa.js框架和Mongoose.js模块。 通常从MongoDB得到一个结果我的代码是这样的: var res = yield db.collection.findOne({id: 'my-id-here'}).exec(); 但是我需要为名为'items'的数组的每个元素执行这一行。 items.forEach(function(item) { var res = yield db.collection.findOne({id: item.id}).exec(); console.log(res) // undefined }); 但是这个代码不能像yield中的函数那样运行。 如果我写这个: items.forEach(function *(item) { var res = yield db.collection.findOne({id: item.id}).exec(); console.log(res) // undefined }); 我也没有得到resvariables的结果。 我试图使用“ generator-foreach ”模块,但没有像这样工作。 我知道这是我对Node.js的语言素养缺乏了解。 但是,你们能帮我find办法吗?

Koa和Express 4.0有什么区别?

Koa和Express 4.0都是相当新的,从我读到的,Koa是由Express团队制作的。 据我所知,Koa需要节点的特性,它只能在节点的0.11(不稳定分支)中使用,并且也使用了生成器。 Express 4.0似乎只是Express框架的下一个版本。 我完全失踪了吗? Koa和Express在未来某个时候是否会合并(根据Express团队公开表示的内容)? 谢谢!

我怎样才能将我的koa路线分成不同的文件?

我想弄清楚如何将我的路线分割成单独的文件。 我到目前为止,但它不工作。 当我尝试访问http://localhost:3001/api/things时,我只是得不到 //server.js var koa = require('koa'); var app = koa(); var router = require('koa-router'); app.use(router(app)); require('./routes')(app); // routes.js module.exports = function *(app){ app.use('/api/things', require('./api/things')); }; // api/things/index.js var Router = require('koa-router'); var router = new Router({ prefix: '/api/things' }); router.get('/', function *(){ this.body = [{ name: 'Foo'}, { name: 'Bar' }]; }); module.exports […]

如何将socket.io与webpack-hot-middleware一起使用?

我有一个使用webpack-dev-middleware的Koa服务器和使用热模块replace(HMR)的webpack-hot-middleware,所以中间件使用一个websocket将更改推送到客户端。 但是我的应用程序代码在客户端和Koa服务器之间也需要自己的websocket连接。 我不知道如何实现? 看起来好像两个是相冲突的。 我可以并排吗? 我的服务器代码看起来像这样 const compiler = webpack(webpackConfig) const app = new Koa() app.use(webpackDevMiddleware(compiler, { quiet: true, noInfo: true stats: { colors: true, reasons: true } }))) app.use(webpackHotMiddleware(compiler)) const server = require('http').createServer(app.callback()) const io = require('socket.io')(server) io.on('connection', function() { console.log('socket connection!!') }) 和我的客户端一样 import Client from 'socket.io-client' const io = Client() io.on('connection', (socket) […]