0

在升级到 TypeScript 1.8 并将我的应用程序编译为带有outFile.

我所有的文件都被编译成app.js我项目的 dist 文件夹中的一个。我可以在app.js从服务器正确加载的网络检查器中看到。没有显示错误,但似乎我bootstrap的应用程序功能从未执行。该应用程序在未编译时运行良好。

SystemJS 设置

System.config({
  map: {
    'app': '/path/to/dist'
  },
  packages: {        
    '/path/to/dist': {
      main: 'app',
      format: 'register',
      defaultExtension: 'js'
    }
  }
});
System.import('app')
  .then(null, console.error.bind(console));

引导.ts

// Required for https://github.com/angular/angular/issues/7052
///<reference path="../node_modules/angular2/typings/browser.d.ts"/> 
import {bootstrap} from 'angular2/platform/browser';
import {ComponentRef, provide} from 'angular2/core';
import {AppComponent} from './components/app/app.component';
import {HTTP_PROVIDERS} from 'angular2/http';
import {ROUTER_PROVIDERS, LocationStrategy, HashLocationStrategy, APP_BASE_HREF} from 'angular2/router';
import {PanelsService} from './components/panels/panels.service';
import {StoriesService} from './components/stories/stories.service';
import {UrlService} from './components/common/url.service';
import {UserService} from './components/user/user.service';
import {AppService} from './components/app/app.service';
import {AlertsService} from './components/alerts/alerts.service';

.................
.................
.................
.................

bootstrap(AppComponent, [
  HTTP_PROVIDERS,
  ROUTER_PROVIDERS,
  provide(LocationStrategy, {useClass: HashLocationStrategy}),
  PanelsService,
  .............
  .............
  .............
  AlertsService
]).catch(err => console.error(err));

我确定我在这里遗漏了一些简单的东西。我不需要boot.ts在我的级联文件中包含我吗?

为了完整起见,我使用gulp-typescript 2.12.0以下任务来编译我的源文件....

return gulp
  .src('app/**/*.ts')
  .pipe(sourcemaps.init())
  .pipe(typescript(tscConfig.compilerOptions))
  .pipe(sourcemaps.write('.'))
  .pipe(gulp.dest('./dist'));

...我tsconfig.json是以下

{
  "compilerOptions": {
    "target": "ES5",
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false,
    "outFile": "app.js"
  },
  "exclude": [
    "node_modules"
  ]
}

任何帮助将不胜感激。

4

1 回答 1

1

我认为您已将所有已编译的 JS 代码放入单个文件中。所以你需要在script标签中包含这个 JS 文件并更新你的 SystemJS 配置:

<script src="/path/to/dist/app.js"></script
<script>
  System.config({
  });
  System.import('app')
    .then(null, console.error.bind(console));
</script>
于 2016-03-01T10:20:33.533 回答