express - 如何使用具有历史回退和 expressjs 路由的 vuejs 路由

标签 express vue.js callback routing auth0

我已经在这个问题上停留了好几个星期了,我想不通。这让我发疯...我阅读了很多教程,听起来它应该有用!

我有一个 expressjs 服务器设置和一个 vuejs 应用程序。我希望能够使用历史浏览器模式提供 vuejs 路由,我还希望能够为我的 api 层设置服务器端路由。

如果我禁用历史模式,一切正常 - 但我需要启用历史模式,以便我可以使用 auth0 库和回调。回调不允许在 url 中使用 #。

这是我的代码:

const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const logger = require('morgan');
const history = require('connect-history-api-fallback');

const app = express();

app.use(require('connect-history-api-fallback')())
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(history({
  verbose: true
}));

app.get('/api', (req, res) => res.send('Hello World!'))
app.use('/', express.static(path.join(__dirname, 'dist')));

var port = process.env.PORT || 8080;
app.listen(port);
console.log('server started '+ port);

对于上面的代码,vuejs 应用程序位于/dist 下,并且该应用程序的所有路由都有效。但是当我尝试点击/api - 它也被重定向到 vuejs 应用程序。

任何帮助将不胜感激!我现在认为这是不可能的。

最佳答案

我遇到了同样的问题。我通过添加 app.use(history()) after 我的 api 路由,但是 before app.use('/', express.static(path.join(__dirname, 'dist')));.

所以我觉得对你来说应该是

const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const logger = require('morgan');
const history = require('connect-history-api-fallback');

const app = express();

app.use(logger('dev'));
app.use(bodyParser.json());

app.get('/api', (req, res) => res.send('Hello World!'));
app.use(history({
  verbose: true
}));
app.use('/', express.static(path.join(__dirname, 'dist')));

var port = process.env.PORT || 8080;
app.listen(port);
console.log('server started '+ port);

这个答案帮助了我:https://forum.vuejs.org/t/how-to-handle-vue-routes-with-express-ones/23522/2

关于express - 如何使用具有历史回退和 expressjs 路由的 vuejs 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48745756/

相关文章:

javascript - VueJS 堆栈跟踪不显示错误发生的位置

java - 使用带有回调的 Spring SimpleJdbcCall 调用存储过程

java - 如何在 UML 类图中表示回调

express - Nestjs 启动在模块初始化中静默失败

javascript - Node.js mysql 查询传递给 async.waterfall 中的下一个函数

javascript - 如何在 VueJS 上使用 <slot v-for> 制作复选框列表?

javascript - 用于绑定(bind)回调序列的 Composer 函数

javascript - Internet Explorer 中的快速 session

javascript - express-validator v4 校验函数中访问请求体

javascript - Vue.js 并根据其他字段更改输入字段