2017-04-12 12 views
0

私はこれまでの多くの質問でこのエラーを見たことがありますが、最新のバージョン4.0.2にアップグレードした直後にこのケースに関係するものはありません。それは円形のDIではなく、ポリーフィルとは関連していないようです。エラー:XXXのすべてのパラメータを解決できません:(?) Angular 4.0.2

私はSystemJSjspm(ウェブパックではありません)を使用しています。おそらくjspmは問題に関連していますが、どうやって解決できないのでしょうか。私はアプリを起動すると

import { NgModule, Component } from '@angular/core'; 
import { HttpModule, Http } from '@angular/http'; 
import { BrowserModule } from '@angular/platform-browser'; 

@Component({ 
    selector: 'app-home', 
    template: `<h2>Hola</h2>`  
}) 
export class HomeComponent { 
    constructor(private http : Http) { 
    } 
} 

@NgModule({ 
    imports: [ 
    BrowserModule, HttpModule 
    ], 
    declarations: [ 
    HomeComponent 
    ], 
    bootstrap: [ HomeComponent ], 
    entryComponents: [ ], 
    providers: [ 
    ] 
}) 
export class AppModule2 { } 

は(クローム57を使用して)エラーは次のとおりです、非常に簡単です

import 'core-js/es7/reflect'; 
import 'zone.js/dist/zone'; 
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 
import { AppModule2 } from './app/app.module2'; 

platformBrowserDynamic().bootstrapModule(AppModule2); 

私のモジュール、app.module2.ts

アプリのエントリポイントはmain.tsです。

Error: Can't resolve all parameters for HomeComponent: (?). 
    Evaluating http://localhost:3000/src/main.ts 
    Loading myapp 
    at syntaxError (http://localhost:3000/jspm_packages/npm/@angular/[email protected]/bundles/compiler.umd.js:1513:34) [<root>] 
    at CompileMetadataResolver._getDependenciesMetadata (http://localhost:3000/jspm_packages/npm/@angular/[email protected]/bundles/compiler.umd.js:14363:35) [<root>] 
    at CompileMetadataResolver._getTypeMetadata (http://localhost:3000/jspm_packages/npm/@angular/[email protected]/bundles/compiler.umd.js:14231:26) [<root>] 
    at CompileMetadataResolver.getNonNormalizedDirectiveMetadata (http://localhost:3000/jspm_packages/npm/@angular/[email protected]/bundles/compiler.umd.js:13840:24) [<root>] 
    at CompileMetadataResolver._getEntryComponentMetadata (http://localhost:3000/jspm_packages/npm/@angular/[email protected]/bundles/compiler.umd.js:14484:45) [<root>] 
    at eval (http://localhost:3000/jspm_packages/npm/@angular/[email protected]/bundles/compiler.umd.js:14067:108) [<root>] 
    at Array.map (native) [<root>] 
    at CompileMetadataResolver.getNgModuleMetadata (http://localhost:3000/jspm_packages/npm/@angular/[email protected]/bundles/compiler.umd.js:14067:73) [<root>] 
    at JitCompiler._loadModules (http://localhost:3000/jspm_packages/npm/@angular/[email protected]/bundles/compiler.umd.js:25144:64) [<root>] 
    at JitCompiler._compileModuleAndComponents (http://localhost:3000/jspm_packages/npm/@angular/[email protected]/bundles/compiler.umd.js:25103:52) [<root>] 
    at JitCompiler.compileModuleAsync (http://localhost:3000/jspm_packages/npm/@angular/[email protected]/bundles/compiler.umd.js:25065:21) [<root>] 
    at PlatformRef_._bootstrapModuleWithZone (http://localhost:3000/jspm_packages/npm/@angular/[email protected]/bundles/core.umd.js:4793:25) [<root>] 
    at PlatformRef_.bootstrapModule (http://localhost:3000/jspm_packages/npm/@angular/[email protected]/bundles/core.umd.js:4779:21) [<root>] 
    at Object.execute (http://localhost:3000/src/main.ts!transpiled:19:65) [<root>] 

私はHomeComponentトンにHttpの注入を削除した場合彼はアプリの読み込みに成功しました。多くのテストの後

マイtsconfig.json

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "lib": [ "es2015", "dom" ], 
    "noImplicitAny": true, 
    "suppressImplicitAnyIndexErrors": true 
    } 
} 
+1

@Injectable()デコレータがないためですか?ソース:https://gist.github.com/gsans/d020de5f0fbe56a22c824e1158ba7ec8#file-mycomponent-ts – floor

+0

@floor問題は角度サービスで、このコードに '@Injectable()'を追加する必要がありますか? – Roberto

+1

try: '@ angular/common'の{CommonModule、Inj​​ectable}をインポートします。ホームコンポーネントのエクスポートの上に@Injectable()をドロップします。 – floor

答えて

0

、問題は角度コードではなくsystemjsと(typescriptです内のファイルを読み込むJSPMにより提供されるデフォルトの設定に基づいてローディングシステムではありません。 ts)、ブラウザはすぐにjsにコンパイルされます。たぶん、蒸散器plugin-typescriptの問題です。

systemjsにjsでモジュールを直接ロードするように設定すると、何が問題なのか分かりません。問題が解消されます。

元のファイル、設定からして私は、モジュール形式で活字体へのすべての参照を削除しました:それはになり

transpiler: "plugin-typescript", 
packages: { 
    "main": { 
     "main": "main.ts", 
     "format": "esm", 
     "defaultExtension": "ts", 
     "meta": { 
     "*.ts": { 
      "loader": "plugin-typescript" 
     } 
     } 
    } 
}, 

transpiler: false, 
packages: { 
    'app': { 
     defaultExtension: 'js' 
    }, 
    'main': { 
     main: 'main.js', 
     defaultExtension: 'js' 
    } 
}, 
map: { 
    'main': 'src', 
    'app': 'src/app' 
} 

今すぐアプリをロードせずに問題。

私はVS Codeを使ってアプリケーションをプログラミングしています。そのため、.tsファイルを編集すると、.jsファイルと.mapファイルが自動的に生成されます。また、transpilingプロセスは、dev-timeで実行されます。元の.tsファイルを使用してデバッグすることができるので、私はこのアプローチで何も失うことはないと思います。

誰かがより良いアプローチをしている場合は、教えてください。

関連する問題