Electron app中的Angular2错误:没有PlatformRef的提供者

时间:2016-10-19 14:06:18

标签: javascript angular typescript gulp electron

我正在尝试在现有的电子应用程序中运行非常基本的angular2内容。 打字稿文件成功编译成js代码,电子运行正常。所有需要的文件都包含在index.html中。但是我在应用启动期间总是出错 - 没有PlatformRef的提供商!

No provider for PlatformRef!

我已经查看了这个链接:No provider for PlatformRef error after upgrading to Angular2 RC5 in IE10

我没有es6-shim依赖,我的TS包版本是2.0.3(最新版)。

这就是我所拥有的。

system.config.js

(function (global) {
    System.config({
        paths: {
            // paths serve as alias
            'npm:': '../node_modules/'
        },
        // map tells the System loader where to look for things
        map: {
            // our app is within the app folder
            'app': 'app',
            'main': 'app/main.bootstrap.js',

            // angular bundles
            '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
            '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
            '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
            '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
            '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
            '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
            '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
            '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
            'rxjs': 'npm:rxjs',
        },
        // packages tells the System loader how to load when no filename and/or no extension
        packages: {
            app: {
                main: './main.bootstrap.js',
                defaultExtension: 'js'
            },
            rxjs: {
                defaultExtension: 'js'
            }
        }
    });
})(this);

main.bootstrap.ts:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './components2/app.module';

platformBrowserDynamic().bootstrapModule(AppModule);

app.module.ts:

import {NgModule} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
import {FormsModule} from '@angular/forms';
import {RouterModule} from '@angular/router';
import {HttpModule} from '@angular/http';

import {AppComponent} from './app.component';
import {DashboardComponent} from './dashboard.component';

import './rxjs-extensions';

@NgModule({
    imports: [
        BrowserModule,
        FormsModule,
        HttpModule,
        RouterModule.forRoot([
            {
                path: 'dashboard',
                component: DashboardComponent
            },
            {
                path: '',
                redirectTo: '/dashboard',
                pathMatch: 'full'
            }
        ])
    ],
    declarations: [
        AppComponent,
        DashboardComponent
    ],
    bootstrap: [ AppComponent ]
})
export class AppModule {
}

app.component.ts:

import { Component, OnInit } from '@angular/core';

@Component({
    selector: 'my-app',
    template: '<h1>{{title}}</h1><div class="header-bar"></div>',
    styleUrls: ['']
})
export class AppComponent implements OnInit {
    //component initialization
    ngOnInit() {
        //check authentication
    }

    title = 'Test';
}

Index.jade:

doctype html
html
    head(lang="en")
        meta(charset="UTF-8")
        title
        ....
        script(type='text/javascript').
            System.import('systemjs.config.js').then(function () {
                System.import('main');
            }).catch(console.error.bind(console));
    body
        my-app

非常感谢提前。

1 个答案:

答案 0 :(得分:1)

我的问题是其中一个文件包含引用'q-io / fs'npm。一旦我删除了这个用法,角度开始工作。很奇怪..