无法删除Aurelia路由';s前面的标签

无法删除Aurelia路由';s前面的标签,aurelia,jspm,Aurelia,Jspm,我遇到了一个我似乎无法解决的问题。 通过执行RouterConfiguration->Options->Push State中提供的步骤,应该可以删除routes中前面的标签 我已经执行了所有这些步骤,请参见下面的代码 app.ts路由配置选项 public configureRouter(config: RouterConfiguration, router: Router) { config.options.pushState = true; config.options.r

我遇到了一个我似乎无法解决的问题。 通过执行
RouterConfiguration->Options->Push State
中提供的步骤,应该可以删除routes中前面的标签

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

app.ts路由配置选项

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
            }
        }
    ]);
    ...
System.config({
  baseURL: "/",
  ...
index.html头

<head>
  <meta charset="utf-8">
  <base href="/">
  ...
我的登录路径仍然只能使用
localhost:9000/#/login
工作,而
localhost:9000/login
无法找到。 我还尝试在一个全新的Aurelia JSPM框架应用程序中实现这一点,但没有效果


知道为什么会发生这种情况以及我可能做错了什么吗?

对于动态加载到路由器视图容器中的视图,以索引作为根,我能够使我的项目的URL看起来如下所示(我相信这就是您所要求的):

  • http://localhost:2112/
  • http://localhost:2112/jobs
  • http://localhost:2112/discussion
我不需要修改您共享的那么多代码就可以让它正常工作。我做的第一件事是在我的根html文件中建立一个基引用。 对我来说,这是index.html

然后,我在
configureRouter()
方法中将推送状态设置为
true

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

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

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);
});

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

我会让路由器团队的人来看看这个。你展示的东西对我来说很长时间都很好,你能用你提到的新骨架进行重新编程吗?@PWKad当然,这是最新的Aurelia JSPM骨架repo=>欢迎路线仅在我输入
localhost:9000/#/welcome
时有效。然后,路由可视地更改为
localhost:9000/welcome
,但当我实际刷新该页面/路由或手动导航到URL时,无法找到路由。您描述的是服务器配置问题。对于通常在
#
之后执行的所有路由,您需要将服务器配置为服务于主
index.html
。然后,应用程序将启动并处理URL
/welcome
@MarcScheib。我使用了Express,不必配置任何0。这与我在问题中描述的完全相同,因此很遗憾,这对我没有任何帮助。@Bryandh此答案“与[your]问题中描述的[your]完全不同”。你有额外的步骤-我只写了两行代码来让它工作。您更改了一个比两行更重要的代码,包括更改
config.js
,这可能会导致您的问题。我建议你重新开始,照我的回答去做。祝你好运。非常感谢,这个很有魅力!我完全不知道我能做到这一点,感谢你的努力!