Angular 2 & BreezeJS & SystemJS 构建 - 多个匿名定义

Angular 2 & BreezeJS & SystemJS Build - Multiple anonymous defines

我正在尝试通过 gulpfile 使用 SystemJS 构建工具构建我的 Angular 2 & BreezeJS 应用程序。 但是,当我尝试执行构建任务时,出现 Multiple anonymous defines 错误。

另一方面,如果我通过直接将 system.jssystemjs.config.js 添加到我的页面来 运行 应用程序,它可以正常工作。

那么,这个错误到底是什么意思,是否可以使用 systemjs-builder 构建我的应用程序?

systemjs.config.js

(function (global) {
    "use strict";

    System.config({
        defaultJSExtensions: true,
        paths: {
            "npm:": "node_modules/"
        },
        map: {
            "app": "app/main",
            "@angular/core": "npm:@angular/core/bundles/core.umd",
            "@angular/common": "npm:@angular/common/bundles/common.umd",
            "@angular/compiler": "npm:@angular/compiler/bundles/compiler.umd",
            "@angular/http": "npm:@angular/http/bundles/http.umd",
            "@angular/platform-browser": "npm:@angular/platform-browser/bundles/platform-browser.umd",
            "@angular/platform-browser-dynamic": "npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd",
            "rxjs": "npm:rxjs",
            "datajs": "npm:datajs/index",
            "breeze-client": "npm:breeze-client/breeze.debug",
            "breeze-bridge-angular2": "npm:breeze-bridge-angular2/index",
        }
    });
})(this);

gulpfile.js

"use strict";

var gulp = require("gulp");

gulp.task("build", function () {
    var Builder = require("systemjs-builder");
    var builder = new Builder("", "./systemjs.config.js");

    return builder.buildStatic("app", "./app/app.js", { encodeNames: false })
        .catch(function (error) {
            console.log("error", error);
        });
});

问题是 breeze.debug.js 包含核心 breeze 文件 和其中的所有适配器

解决方案是使用 breeze.base.debug.js 和单独的适配器。

一个重要的区别是您需要明确地将额外的适配器导入到您的应用程序中,我相信这样做的理想位置是您的 entity manager

这是一个工作示例。它还包含 build-breeze.debug 任务,该任务正在使用 breeze.debug.js 并因 Multiple anonymous defines 错误而失败。 https://github.com/forCrowd/Labs-BreezeJS-SystemJSBuilder