当我使用发电机时,我一直在努力让koa回应请求。 我写了一个test.js应用来证明这一点。
var koa = require('koa');
var app = new koa();
var Router = require('koa-router');
var router = new Router();
router.get('/', function *(next){
this.body = "hello world";
console.log("success")
});
app.use(router.routes())
app.use(router.allowedMethods());
app.listen(3000);
console.log("listening on 3000");
我使用节点v4.6.1运行服务器
没有错误发生,但是当我发送get请求时,我得到Not Found
并且没有控制台日志。
此代码有效:
var koa = require('koa');
var app = new koa();
var Router = require('koa-router');
var router = new Router();
router.get('/', function (ctx){
ctx.body = "hello world";
console.log("success")
});
app.use(router.routes())
app.use(router.allowedMethods());
app.listen(3000);
console.log("listening on 3000");
知道发电机为什么不运行?
答案 0 :(得分:4)
如果您使用的是@next
版本的koa和koa-router,则应该使用async
函数作为中间件,而不是用于Koa v1的生成器函数。
示例:
var koa = require('koa');
var app = new koa();
var Router = require('koa-router');
var router = new Router();
router.get('/', async function (ctx){
// You can use `await` in here
ctx.body = "hello world";
console.log("success")
});
app.use(router.routes())
app.use(router.allowedMethods());
app.listen(3000);
console.log("listening on 3000");
当然,除非您使用的是Node v7并使用async/await
标志,否则目前不支持--harmony-async-await
。如果要将它与Node v4一起使用,则必须使用babel
之类的内容来转换代码。如果您不想为服务器端代码构建一个步骤,我建议您只使用Koa v1并坚持使用生成器函数。
答案 1 :(得分:-1)
namespace App\Http\Controllers;
use App\Product;
use Illuminate\Http\Request;
class ProductImageController
{
public function update(Request $request, $id)
{
$path = $request->file('file')->store('images');
$product = Product::find($id);
$product->img_url = $path;
return $product->save() ?
response(["error_code" => 0, $product]) :
response(["error_code" => 1]);
}
}