Angular.js - Angular2 無法解析「解析器」的所有參數(?)。
phpcn_u1582
phpcn_u1582 2017-05-15 17:13:27
0
2
777

剛搭建一個angular2的框架,angular版本2.4.0,webpack打包完瀏覽器console報錯:
bundle.min.js:39162 Uncaught Error: Cannot resolve all parameters for 'Parser'(?). Make sure that the the parameters are decorated with Inject or have valid type annotations and that 'Parser' is decorated with Injectable.
但是angular版本改為2.0的就不會報錯,程式碼也是最簡單的官網上的demo,以下是tsconfig.json配置

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
  },
  "exclude": [
    "node_modules",
    "typings/main",
    "typings/main.d.ts"
  ],
  "compileOnSave": false,
  "buildOnSave": false
}

是ts配置出錯還是什麼原因呢,求解

phpcn_u1582
phpcn_u1582

全部回覆(2)
伊谢尔伦

從你的報錯看應該是DI出了問題,可以試試看把你的target改為:

"target": "es6"

不行的話就試試在你的服務裡顯示地引入操作符:

import {Inject} from '@angular/core';
//...
constructor(@Inject(SomeService) someService: SomeService);

希望你能順利解決 :)

phpcn_u1582

由於你沒有貼完整的程式碼,我只能提個猜測:
應該是你呼叫某個函數的時候,沒有給它傳函數所需的參數。舉個栗子:

function fn(str){
    console.log(str || '参数未定义');
}
fn();//参数不正确

由於typescript會對函數的參數也會嚴格檢查,這段程式碼在執行fn()的時候,沒有給fn傳遞str參數,所以編譯的時候會錯誤。

你可以藉用別人的專案來搭建angular開發環境,github有非常多的使用webpack搭建angular開發環境的例子,這裡有個比較全也比較好的demo可以拿去參考:
https://github. com/ntesmail/a...

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板