嗨,我需要一些关于快车如何处理路线的帮助。
在设置我的express应用程序时,我有以下内容:
接下来,我挂载一些api路由:
app.use('/api', myrouter);
app.get('*', function(req, res) {
res.sendFile(path.resolve('public/index.html'));
});
但是,当前端通过api路由请求数据时,例如在'localhost:3000/api/things',我在Express debug日志中看到,在某个时刻(不确定何时)它实际上尝试将此请求作为静态文件提供服务,例如:
send stat "C:\myproject\public\api\things" +230ms
即使这个文件夹不存在于'public'中,应该由我的API单独处理。仅供参考的是,路由的处理程序仅为GET方法实现,并且在某些时候会被调用。
如何阻止express server同时尝试为静态文件夹中的api请求提供服务?
谢谢。
回答我自己的问题。。。它似乎是以下命令的重复:express.static()`从路由中继续路由我的文件
答案就是这个:https://stackoverflow.com/a/28143812/8670745
简而言之,挂载api路由器的app.use()声明应该出现在告诉express.static从何处提供静态文件的app.use()语句之前。通过这种方式,后者在api路由处理完成后充当一个catchall。路由器引擎订单事项。。。
你的答案是错误的,或者说你曲解了问题。您的原始配置:
app.use(express.static(__dirname + 'public'));
app.use('/api', myrouter);
看起来很好,因为路线之间没有冲突。你链接的线程也不是真的一样,我可以理解为什么在那些情况下移动路由会起作用。
我要说的唯一一件事是,静态文件夹的路径不可靠,您应该使用