用nodejs建了一个服务器, 在访问网页的时候, 除了第一次访问, 之后的访问都会报错Error: Can’t set headers after they are sent. 我看了一下貌似是因为后面的中间件比路由先执行了, 但是不太明白为什么会这样? app.js :
routes :
console :
因为你没有使用应用级路由
app.use('/', routes)
@Telanx 如果写成 app.use(routes), 跟写成 app.use(’/’, routes) 有什么区别吗? 我改了还是有这个问题呀
我发现出现这个错误是在我添加了下面这几行代码之后出现的 // 处理表单及文件上传的中间件 app.use(formidable({ uploadDir: path.join(__dirname, ‘public’, ‘images’), // 上传文件目录 keepExtensions: true // 保留后缀 })); 如果不用express-formidable这个中间件就不会出现问题, 这是为什么呢
是我弄错了,如果是app.get是不会被捕获到
但是从你的截图看来,访问/
是不应该执行到404,以及Error hanlder里边去的
@Telanx 是 第一次执行到routes里, 第二次开始就是先执行404, error handler, 然后才执行到routes里
为什么要写return ? From Noder
@Eeylx 我也是在用了formidable之后出现了这个问题,原因找到了吗?
formidable 是写在什么地方的? 具体可以看这个框架,了解formidable用法:
[email protected]:yujintang/koa2-server.git
实际上可能不是你看到的那样。。 建议在输出111和222的那里,把url也输出出来