我正在创建一个应用与快递,下一步和ace (亚特兰-连接-快车)。
Express + next要求我使用这样的路线:
app.all('*', (req, res) => {
return handle(req, res)
})但我需要亚特兰西岛连接的特殊行为。在ace示例中,这样做如下:
app.get('/', (_, res) => {
res.redirect('/atlassian-connect.json');
})问题是,第一条路线仍将用于/亚特兰-Connect.json,所以我也必须重写它。
但是,如果我像这样手动尝试,就会遇到以下问题:
app.get('/atlassian-connect.json', (_, res) => {
let content = fs.readFileSync(path.resolve('atlassian-connect.json'));
let json = JSON.parse(content);
res.send(json)
})json包含这样的部分:
"baseUrl": "{{localBaseUrl}}"而且,如果我没有/atatassian-connect.json的手动路径,localBaseUrl就会自动填写。当我使用我的路线时,它不会被填满。我怎么填呢?
发布于 2022-03-03 17:51:56
我发现,发送填好的json不是来自express的默认内容,而是ace模块所做的事情。
因此,我发现的方法是手动定义所有路径,如下所示:
app.get('/', (_, res) => {
res.redirect('/atlassian-connect.json');
})
// all routes to be accessible
app.all('/app', (req, res) => {
return handle(req, res)
})
// all compiled next route
app.all('/_next/*', (req, res) => {
return handle(req, res)
})我试着用regex来匹配除亚特兰西安-Connect.json以外的所有线路,并想出了这样的结果:^(?!atlassian-connect.json$).*$,但它似乎不起作用。所以我想最简单的方法就是手动声明所有的路线。
编辑:
我想出了如何让regex开始工作(愚蠢的我不读文档)
固定路由:
// ace configuration
app.get('/', (_, res) => {
res.redirect('/atlassian-connect.json');
})
// all routes except /atlassian-connect.json
app.all(/^(?!\/atlassian-connect.json$).*$/, (req, res) => {
return handle(req, res)
})https://stackoverflow.com/questions/71340481
复制相似问题