无法删除Aurelia路由的前一个标签

Bry*_*ndh 5 aurelia jspm

我遇到了一个似乎无法解决的问题.应该可以通过执行中提供的步骤来删除路由中的前一个hashtag RouterConfiguration -> Options-> Push State.

我已经执行了所有这些步骤,请参阅下面的代码.

app.ts RouterConfiguration选项

public configureRouter(config: RouterConfiguration, router: Router) {
    config.options.pushState = true;
    config.options.root = '/';
    config.map([
        {
            route: 'login',
            name: 'login',
            moduleId: 'pages/auth/login',
            nav: false,
            title: 'Login',
            settings: {
                allow_anonymous: true
            }
        }
    ]);
    ...
Run Code Online (Sandbox Code Playgroud)

index.html头

<head>
  <meta charset="utf-8">
  <base href="/">
  ...
Run Code Online (Sandbox Code Playgroud)

config.js

System.config({
  baseURL: "/",
  ...
Run Code Online (Sandbox Code Playgroud)

我的登录路线仍然只能使用localhost:9000/#/loginlocalhost:9000/login无法找到.我也试过在一个新的Aurelia JSPM骨架应用程序中实现它无济于事......

知道为什么会这样,我可能做错了什么?

Mar*_*eib 1

对于 BrowserSync (如 @Bryandh 所描述),您需要将其配置为始终回退到您的index.html. 根据您的项目,您可能有一些需要更改的任务文件(例如 Gulp 服务任务,在整个 Aurelia 中使用)。

作为一个例子,我以 Aurelia 的骨架导航项目为例。skeleton-esnext它有一个使用 Gulp 和 JSPM 来运行应用程序的子目录。文件中build/tasks/serve.js有一个serve任务需要调整如下:

var historyFallback = require('connect-history-api-fallback');

gulp.task('serve', ['build'], function(done) {
  browserSync({
    online: false,
    open: false,
    port: 9000,
    server: {
      baseDir: ['.'],
      middleware: [function(req, res, next) {
        res.setHeader('Access-Control-Allow-Origin', '*');
        next();
      }, historyFallback()]
    }
  }, done);
});
Run Code Online (Sandbox Code Playgroud)

重要的部分是historyFallback()中间件。这是由 BrowserSync 自动提供的。如果您现在为您的应用程序提供此任务(gulp servegulp watch),您可以直接访问您的路线,例如http://localhost:9000/usersindex.html当您被定向到引导程序 Aurelia 并处理路线时,将不再有 404 /users