2017-02-12 4 views
1

При попытке загрузить Localhost: 3000/verifyemail в моем браузере, я получаю сообщение об ошибке:Угловое 2 Маршрутизатор: не может соответствовать любому маршруты

Error: Cannot match any routes

Я прочитал другие SO вопросы по этому вопросу, и есть проверено:

  • Угловая2: 2.3.1 по умолчанию использует стратегию определения местоположения пути, и я ее не изменил. Я предпочитаю не использовать Hash Расположение стратегии
  • Я настроил мой сервер Nodejs для HTML5 PushState (server.js ниже)

    // Parsers for POST data 
    app.use(bodyParser.json()); 
    app.use(bodyParser.urlencoded({ extended: false })); 
    
    // Point static path to dist 
    app.use(express.static(path.join(__dirname, 'dist'))); 
    
    // Get API routes 
    const api = require('./src/server/routes/api.js'); 
    
    // Set api routes 
    app.use('/api', api); 
    
    // Catch all other routes and return the index file 
    app.get('*', (req, res) => { 
    res.sendFile(path.join(__dirname, 'dist/index.html')); 
    }); 
    
    const port = process.env.PORT || '3000'; 
    app.set('port', port); 
    
    const server = http.createServer(app); 
    server.listen(port,() => console.log(`API running on localhost:${port}`)); 
    
  • У меня есть <base href="/"> в верхней части моей <head> в моем индексе. HTML

  • у меня есть по умолчанию и поймать-все маршруты установить

    const appRoutes: Routes = [ 
        { path: 'home', 
        outlet: 'full-page', 
        component: DefaultLandingPageComponent 
        }, 
    
        { path: 'verifyemail', 
        outlet: 'full-page', 
        component: EmailVerificationComponent 
        }, 
    
        { path: '', 
        redirectTo: '/home', 
        pathMatch: 'full' 
        }, 
    
        { path: '**', 
        outlet: 'full-page', 
        component: DefaultLandingPageComponent 
        } 
    ]; 
    
  • Я импортировал модуль маршрутизатора в моих app.module.ts, и включал в себя выход маршрутизатора в моем файле app.component.html

    //in app.module.ts: 
    @NgModule({ 
        ... 
        imports: [ 
        ... 
        RouterModule.forRoot(appRoutes) 
        ] 
        ... 
        }); 
    
    //in app.component.html 
    import { RouterModule, Routes } from '@angular/router'; 
    

Спасибо большое, чтобы тот, кто может дать мне руку с этим!

Update 1 Я удалил все имена из маршрутов и выход маршрутизатора, благодаря наблюдению Гюнтера Zöchbauer в комментариях ниже

Update 2 Все работает, как ожидалось на локальном хосте: 4200/verifyemail , который запускается через ng serve. Проблема сохраняется при использовании localhost: 3000/verifyemail, которая запускается через node server.js

ответ

1

Каждый маршрут требует маршрута, который добавляет компонент к неназванной розетке. Названные розетки могут использоваться только в неназванной розетке, а не вместо нее.

+0

Большое спасибо за помощь - возможно, это была проблема, но она все еще не работает. Я удалил свойство name из маршрутов и с выхода маршрутизатора, который теперь читает '<маршрутизатор-выход>'. Перезагрузка сервера работает - если я изменю res.sendFile на любой другой файл, кроме index.html, он сделает это правильно. Проблема в том, что когда он получает перенаправления на index.html, а затем не может найти маршруты – ManGI1

+0

Извините, не могу помочь вам с настройками сервера node.js. –

+0

Спасибо - сервер работает нормально, поэтому я думаю, что проблема находится на угловой стороне. Делает ли что-нибудь еще в моем угловом коде, как может быть, проблема? Оцените свою помощь – ManGI1

Смежные вопросы