【问题标题】:Routing in angular2 Not Working In live serverangular2中的路由在实时服务器中不起作用
【发布时间】:2016-12-29 08:13:59
【问题描述】:

我已经使用 angular2 建立了一个网站,它在 localhost 上运行良好,但是当我将它部署到我的服务器上时,所有 css 和 js 链接似乎都断开了。

ex:localhost:4200/home 工作正常,但 ip:4200/home 为 css 和 js 文件提供 404。

ip:4200 本身会重定向到 home,但是输入 ip:4200/home 会给出 404,即使在重新加载时也会给出 404

我想我需要修复这些路由。

我的路由器ts文件如下:

import { ModuleWithProviders }  from '@angular/core';
import { Routes, RouterModule } from '@angular/router';


import { HomeComponent }  from './component/home.component';
import { RegisterComponent } from './component/register.component';
import { ProductComponent } from './component/product.component';

const appRoutes: Routes = [

  {
    path: '',
    redirectTo: '/home',
    pathMatch: 'full'
  },

  {
    path: 'home',
    component: HomeComponent
  },
  {
   path: 'register',
   component: RegisterComponent
  },
   {
    path: 'product',
    component: ProductComponent
  }


];

导出常量路由:ModuleWithProviders = RouterModule.forRoot(appRoutes);

而 app.module.ts 是这样的:

import { NavBar } from './component/nav-bar.component';
import { RegisterService } from './services/register.service';
import { HomeService } from './services/home.service';
import { ProductService } from './services/product.service';
import { ProductComponent } from './component/product.component';
import { NavBar1 } from './component/nav-bar1.component';
@NgModule({
  declarations: [
    AppComponent,
    HomeComponent,
    RegisterComponent,
    NavBar,
    ProductComponent,
    NavBar1

  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    RouterModule.forRoot([
         {
           path: 'register',
           component: RegisterComponent
         }
       ]),

    routing
  ],
  providers: [
RegisterService,
HomeService,
ProductService
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

【问题讨论】:

标签: css angular


【解决方案1】:

切换到HashLocationStrategy

providers: [{provide: LocationStrategy, useClass: HashLocationStrategy}, ...

或将您的服务器配置为支持 HTML5 pushState(将对不存在文件的请求重写为 index.html

【讨论】:

  • provice is given node_modules/@angular/core/index"' has no exported member 'provice'。甚至我尝试使用提供:它给出了相同的错误 node_modules/@angular/core/ index"' 没有导出的成员 'provide'。
  • 抱歉,打错字了——应该是provide
  • 我已经尝试提供 aswel 但仍然给出相同的错误 node_modules/@angular/core/index"' has no export member 'provide',我需要为此安装任何模块
  • 这只是一个对象字面量,你不需要任何东西。不知道为什么会出现此错误。你不需要导入provide
【解决方案2】:

您应该包含 .htaccess 并将此代码放在根目录下。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>

我希望我能让你开心。

【讨论】:

    猜你喜欢
    • 2016-04-16
    • 1970-01-01
    • 2016-07-11
    • 2020-01-15
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    相关资源
    最近更新 更多