2017-01-31 76 views
0

我使用this和我有分量localizerouter不改變語言後發佈

import { Component } from '@angular/core'; 
import {LocalizeRouterService} from 'localize-router'; 

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 
export class AppComponent { 
    title = 'app works!'; 

    constructor(private localize: LocalizeRouterService) {} 

    changeLanguage(lang: string) { 
    this.localize.changeLanguage(lang); 
    } 
} 

和HTML的代碼

<button (click)="changeLanguage('en')">EN</button> 
<button (click)="changeLanguage('de')">DE</button> 

這在本地主機工作得很好,但只要我用它發佈ng build --prod和IIS中的主機記錄此錯誤:

Unexpected token < in JSON at position 0

怎麼了?

回答

1

該應用正試圖從本地化路由器加載JSON配置文件。我猜你忘了將它添加到angular-cli.json內的資產數組中。因爲你的網絡服務器設置爲服務於任何404個請求與index.html文件,應用程序試圖解析html文件爲JSON,這將導致典型錯誤:

Unexpected token < in JSON at position 0

當令牌<是開始<!DOCTYPE html>標記。

總之,編輯您angular-cli.json

{ 
    ... 
    "apps": [ 
    { 
     ... 
     "assets": [ 
     ..., 
     "path/to/localize-router/config.json" 
     ], 
    } 
    ] 
} 

這也可能是你忘了加你的字典json文件到文件夾的資產。但爲此,如上所述適用相同的配方

+0

找不到node_modules/localize-router文件夾中的任何config.json文件http://i.imgur.com/BoUqWTT.png – gsiradze

+0

@gsiradze它是一個配置文件做你自己。 [閱讀](https://github.com/Greentube/localize-router#json-config-file),它也可能是它忘了添加到你的資產的字典文件(IVE更新了我的答案) – PierreDuc

+0

好的我做了那個http://i.imgur.com/VZOBxPN.png,但是我在編譯產品時遇到錯誤:'ENOENT:沒有這樣的文件或目錄,stat'C:\ Users \ ... \ WebstormProjects \ loca ' – gsiradze