Базовый маршрутизатор не работает в Aurelia

#javascript #aurelia

#javascript #aurelia

Вопрос:

Все, что я пытался сделать, дало мне ошибку в консоли. «ОШИБКА [app-router] Ошибка: маршрут не найден: / (…) ошибка»

Я не понимаю, что я мог делать неправильно.

Мои пути к папкам:

 --wwwroot
    |_ src
        |_app.html   app.js
        |_home.html   home.js
        |_mypage.html   mypage.js
  

Мой app.html страница

 <template>    
    <div class="container-fluid">
        <div class="row">

            <div class="col-sm-3 col-lg-2">
                <nav class="navbar navbar-default navbar-fixed-side">
                    <ul class="nav navbar-nav">

                        <li repeat.for="row of router.navigation" class="${row.isActive ? 'active' : ''}">
                            <a href.bind="row.href">${row.title}</a>
                        </li>
                    </ul>
                </nav>
            </div>
            <div class="col-sm-9 col-lg-10">
                <div class="row">
                    <h1>${message}</h1>
                </div>
            </div>
        </div>

    </div>
    <div class="page-host">
        <!-- Route mount point  -->
        <router-view></router-view>
    </div>
</template>
  

Мой app.js файл является

 export class App {
    message = "Hello Pathways";

    configureRouter(config, router) {
        config.title = 'Scotch IG';
        // Use map to set array of possible routes
        config.map([
                { route: ['','home'], name: 'home', moduleId: './home', nav: true, title:'Home' },
                { route: 'mypage', name: 'mypage',  moduleId: './mypage',    nav: true, title:'MyPage' }
        ]);

        // Create a binding to the router object
        this.router = router;
    }
}
  

Я пытался использовать src/ перед всем, чтобы попробовать разные структуры папок. Но я начинаю думать, что что-то не так с установкой.

Мой config.js под путями находится "*": "src/*.js"

Комментарии:

1. Я вижу, что ваше приложение находится в wwwroot папке. Какой скелет вы используете? Или какие параметры вы предоставили cli, если вы использовали aurelia-cli?

2. @FredKleuver Я понял это, main.js файл был указан по неправильному пути

3. ./ Замените свой синтаксис на свой moduleId . Вместо этого просто укажите ModuleID в качестве пути от корня вашего приложения (если корень есть src , то просто скажите home вместо ./home )

Ответ №1:

Укажите путь в config.js как показано ниже

 paths: {
    "*": "src/*",
    "github:*": "jspm_packages/github/*",
    "npm:*": "jspm_packages/npm/*"
  },
  

Об этом позаботятся. Если у вас есть какая-либо папка внутри src, укажите ModuleID: foldername/Home .

И еще один момент, если вы используете main.js файл, затем проверьте с помощью setRoot на файл приложения, например

 aurelia.start().then(a => a.setRoot('app'));
  

Комментарии:

1. да, мой main.js файл оказался в неправильном пути к папке. Конфигурация, которую я опубликовал, также работает. Я использовал setRoot() без параметров.

2. @christopherclark Если мой ответ идеален, отметьте его как правильный.