我有一个expressjs设置,如下所示:
// Imports...
const app: express.Application = express();
const port: number = 3001;
const listener = new StatementListenerAPI();
app.use('/listen', listener.getRouter());
app.use('/welcome', router);
if (fs.existsSync('./client')) {
// Running in prod environment with pre built client directory. Serve this.
app.use(express.static('./client'));
}
app.listen(port);
所以我有一些路由器连接到express应用程序,在底部我声明
client
应该是静态的。这个目录包含index.html以及许多js、css和png文件。但是,无论我尝试从express服务器访问哪个url,它总是在静态服务目录中显示index.html的代码。对index.html中使用的js和css文件的引用也只是返回index.html的代码。
我正在使用ExpressJS 4.16.3
我做错什么了?
编辑:所以从技术上讲,如果使用
__dirname + '/client'
而不是
./client
是的。我现在得到的是,当从邮递员(因此“手工”http请求)发出get请求时,我总是得到正确的结果。如果我从我的web浏览器中调用资源,它仍然会显示网站(解析index.html)。但是,现在所有的资源,比如js和css脚本,都被正确地解析了,所以看起来chrome可以正确地解析这些依赖关系,我只是想知道为什么在通过chrome请求一些资产或一些express端点时,仍然会得到index.html的内容。通过代码进行的api调用运行良好,所以手动chrome请求显示这种奇怪行为的唯一原因,在这一点上,我只是出于好奇而提出请求。