Angular2 執行 ng-xi18n遇到的錯誤與解決方法。


起因:
由於專案要加入i18n多國語系又剛好angular2有i18n的功能,所以就來試試看。然後才一開始就撞到牆!直接給你不知道該怎麼解決的錯誤,此時也只能求助google 大神了 XD

版本:
angular-cli:  1.0.0-beta-25.5
@angular/common: "^2.3.1",
@angular/compiler: "^2.3.1",
@angular/core: "^2.3.1",
@angular/forms: "^2.3.1",
@angular/http: "^2.3.1",
@angular/platform-browser: "^2.3.1",
@angular/platform-browser-dynamic: "^2.3.1",
@angular/router: "^3.3.1",
@angular/compiler-cli: "^2.3.1",
@angular/platform-server: "2.4.8",


一開始照著angular.io 的i18n教學在template的tag上面加上i18n這個tagname,然後簡單的試試看node_modules的ng-xi18n這個script


./node_modules/.bin/ng-xi18n 

接著就出現錯誤了......

出現 "Error: Error encountered resolving symbol values statically. Calling function 'NoOpAnimationDriver'" 不知道啥鬼的錯誤訊息。原本以為更新看看angular-cli到最新版在試試看,沒想到還是一樣。


最後在google大神的幫助下找到了解法。
1. 在src/tsconfig.json內加入
"exclude": [
     "test.ts", 
     "**/*.spec.ts" 
 ]


{
  "compilerOptions": {
    "baseUrl": "",
    "declaration": false,
    "emitDecoratorMetadata": true,
    .......
    .......
  },
  "exclude": [
    "test.ts",
    "**/*.spec.ts"
  ]
}
2. 然後執行 "./node_modules/.bin/ng-xi18n -p src/tsconfig.json" 就可以在src下產生 messages.xlf檔案了。

好像是因為angular-cli有自己的tsconfig.json然後我們用 -p 轉導去讀我們在src下的tsconfig.json,並且在tsconfig.json下要ng-xi18n跳過 test.ts跟有關*.spec.ts檔案。

接下來在繼續照angular官方教學試試看,有問題再跟大家分享。

Ref:  

留言

張貼留言