2016-12-30 57 views
0

我想通過使用SystemJS構建工具通過gulpfile來構建我的Angular 2 & BreezeJS應用程序。 但是,當我嘗試執行構建任務時,出現Multiple anonymous defines錯誤。另一方面,如果我通過將system.jssystemjs.config.js直接包含在我的頁面中運行該應用程序,它的工作原理沒有任何問題。Angular 2&BreezeJS&SystemJS構建 - 多個匿名定義

那麼,這個錯誤究竟意味着什麼,是否有可能用systemjs-builder構建我的應用程序?

  • 微風客戶端:1.6.0
  • systemjs:0.19.41
  • systemjs建設者:0.15.34

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); 
     }); 
}); 

回答

0

的問題是,breeze.debug.js包含核心微風文件和所有的適配器在裏面。

解決方案是使用breeze.base.debug.js與單獨的適配器。

一個重要的區別是,您需要明確地將其他適配器導入到您的應用程序中,並且我相信這樣做的理想位置是您的entity manager

這是一個工作示例。它還包含使用breeze.debug.jsbuild-breeze.debug任務,並且因Multiple anonymous defines錯誤而失敗。 https://github.com/forCrowd/Labs-BreezeJS-SystemJSBuilder