2017-05-05 64 views
2

我正在處理.net核心mvc +角度應用程序。 mvc框架處理用戶管理,當用戶登錄應用程序的特定區域時,角色接管。 所以,當我向網站添加一個角度-2(統計)應用程序,它正在工作。我需要實現另一個功能,所以我在同一個解決方案中添加了另一個angular-2應用程序(實踐)。一切都很好。角-4來了。所以更改了對angular-4的引用,並且因爲我在第二個角度應用上工作了一段時間沒有檢查第一個角度應用。現在,當我嘗試運行第一個角度應用(統計信息)時,第二個應用加載角度時出現此錯誤。錯誤:(SystemJS)導出未定義

這兩個應用程序共享systemjs.config.js,package.json,tsconfig.json,typings.json。

錯誤:

Error: (SystemJS) exports is not defined 
ReferenceError: exports is not defined 
    at eval (http://localhost:60660/apps/common/date.extentions.js:2:23) 
    at eval (<anonymous>) 
    at Object.eval (http://localhost:60660/apps/common/daterange.component.js:13:1) 
    at eval (http://localhost:60660/apps/common/daterange.component.js:40:4) 
    at eval (http://localhost:60660/apps/common/daterange.component.js:41:3) 
    at eval (<anonymous>) 
Evaluating http://localhost:60660/apps/common/date.extentions.js 
Evaluating http://localhost:60660/apps/common/daterange.component.js 
Evaluating http://localhost:60660/apps/stats/app.module.js 
Evaluating http://localhost:60660/apps/stats/main.js 
Error loading http://localhost:60660/apps/stats/main.js 
    at eval (http://localhost:60660/apps/common/date.extentions.js:2:23) 
    at eval (<anonymous>) 
    at Object.eval (http://localhost:60660/apps/common/daterange.component.js:13:1) 
    at eval (http://localhost:60660/apps/common/daterange.component.js:40:4) 
    at eval (http://localhost:60660/apps/common/daterange.component.js:41:3) 
    at eval (<anonymous>) 
Evaluating http://localhost:60660/apps/common/date.extentions.js 
Evaluating http://localhost:60660/apps/common/daterange.component.js 
Evaluating http://localhost:60660/apps/stats/app.module.js 
Evaluating http://localhost:60660/apps/stats/main.js 
Error loading http://localhost:60660/apps/stats/main.js 

systemjs.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 
      stats: 'apps/stats/', 
      practices: 'apps/practices', 

      // 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', 

      // other libraries 
      'rxjs': 'npm:rxjs', 
      'angular-in-memory-web-api': 'npm:angular-in-memory-web-api' 
     }, 
     // packages tells the System loader how to load when no filename and/or no extension 
     packages: { 
      stats: { 
       main: 'main.js', 
       defaultExtension: 'js' 
      }, 
      practices: { 
       main: 'main.js', 
       defaultExtension: 'js' 
      }, 
      rxjs: { 
       defaultExtension: 'js' 
      }, 
      'angular-in-memory-web-api': { 
       main: 'index.js', 
       defaultExtension: 'js' 
      } 
     } 
    }); 
})(this); 

的package.json

{ 
    "version": "1.0.0", 
    "name": "asp.net", 
    "private": true, 
    "scripts": { 
    "start": "tsc && concurrently \"tsc -w\" \"lite-server\" ", 
    "lite": "lite-server", 
    "postinstall": "typings install", 
    "tsc": "tsc", 
    "tsc:w": "tsc -w", 
    "typings": "typings" 
    }, 
    "dependencies": { 
    "@angular/common": "~4.0.0", 
    "@angular/compiler": "~4.0.0", 
    "@angular/core": "~4.0.0", 
    "@angular/forms": "~4.0.0", 
    "@angular/http": "~4.0.0", 
    "@angular/platform-browser": "~4.0.0", 
    "@angular/platform-browser-dynamic": "~4.0.0", 
    "@angular/router": "~4.0.0", 
    "@types/node": "^7.0.13", 
    "angular-in-memory-web-api": "~0.3.0", 
    "core-js": "2.4.1", 
    "reflect-metadata": "0.1.8", 
    "rxjs": "5.3.0", 
    "spinkit": "1.2.5", 
    "systemjs": "0.19.39", 
    "typescript": "2.2.1", 
    "zone.js": "0.8.5" 
    }, 
    "devDependencies": { 
    "@types/core-js": "^0.9.34", 
    "concurrently": "3.1.0", 
    "gulp": "3.9.1", 
    "gulp-concat": "2.6.0", 
    "gulp-cssmin": "0.1.7", 
    "gulp-environments": "0.1.1", 
    "gulp-rimraf": "0.2.0", 
    "gulp-uglify": "2.0.0", 
    "lite-server": "2.2.2", 
    "typescript": "2.2.1", 
    "typings": "~2.1.1" 
    } 
} 

tsconfig.json

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

    "exclude": [ 
     "node_modules", 
     "wwwroot/lib", 
     "typings" 
    ] 

    } 

typings.json

{ 
    "globalDependencies": { 
    "core-js": "registry:dt/core-js#0.0.0+20160602141332", 
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 
    "node": "registry:dt/node#7.0.0+20170110233017" 
    } 
} 

date.extensions.ts

export { } 

// DATE EXTENSIONS 
// ================ 

declare global { 
    interface Date { 
     addDays(days: number, useThis?: boolean): Date; 
     isToday(): boolean; 
     clone(): Date; 
     isAnotherMonth(date: Date): boolean; 
     isWeekend(): boolean; 
     isSameDate(date: Date): boolean; 
     yyyy_mm_dd(): string; 
    } 
} 

Date.prototype.addDays = function (days: number): Date { 
    if (!days) return this; 
    console.log(this); 
    let date = this; 
    date.setDate(date.getDate() + days); 

    return date; 
}; 

Date.prototype.isToday = function(): boolean { 
    let today = new Date(); 
    return this.isSameDate(today); 
}; 

Date.prototype.clone = function(): Date { 
    return new Date(+this); 
}; 

Date.prototype.isAnotherMonth = function (date: Date): boolean { 
    return date && this.getMonth() !== date.getMonth(); 
}; 

Date.prototype.isWeekend = function(): boolean { 
    return this.getDay() === 0 || this.getDay() === 6; 
}; 

Date.prototype.isSameDate = function(date: Date): boolean { 
    return date && this.getFullYear() === date.getFullYear() && this.getMonth() === date.getMonth() && this.getDate() === date.getDate(); 
}; 

Date.prototype.yyyy_mm_dd = function(): string { 
    var mm = (this.getMonth() + 1).toString(); // getMonth() is zero-based 
    var dd = this.getDate().toString(); 

    return [this.getFullYear(), '-', mm.length === 2 ? '' : '0', mm, '-', dd.length === 2 ? '' : '0', dd].join(''); // padding 
} 

date.extensions.js

"use strict"; 
Object.defineProperty(exports, "__esModule", { value: true }); 
Date.prototype.addDays = function (days) { 
    if (!days) 
     return this; 
    console.log(this); 
    var date = this; 
    date.setDate(date.getDate() + days); 
    return date; 
}; 
Date.prototype.isToday = function() { 
    var today = new Date(); 
    return this.isSameDate(today); 
}; 
Date.prototype.clone = function() { 
    return new Date(+this); 
}; 
Date.prototype.isAnotherMonth = function (date) { 
    return date && this.getMonth() !== date.getMonth(); 
}; 
Date.prototype.isWeekend = function() { 
    return this.getDay() === 0 || this.getDay() === 6; 
}; 
Date.prototype.isSameDate = function (date) { 
    return date && this.getFullYear() === date.getFullYear() && this.getMonth() === date.getMonth() && this.getDate() === date.getDate(); 
}; 
Date.prototype.yyyy_mm_dd = function() { 
    var mm = (this.getMonth() + 1).toString(); // getMonth() is zero-based 
    var dd = this.getDate().toString(); 
    return [this.getFullYear(), '-', mm.length === 2 ? '' : '0', mm, '-', dd.length === 2 ? '' : '0', dd].join(''); // padding 
}; 
//# sourceMappingURL=date.extentions.js.map 
+0

'apps/common/date.extentions.js'中有什麼? –

+0

如果您將''apps/common/date.extensions.js''添加到包並添加'format:'cjs'',該怎麼辦? –

+0

添加了date.extensions文件 – padhu

回答

3

要麼除去export {}應用/普通/日期。 extensions.ts明確指定模塊格式"cjs"

SystemJS使用模塊格式檢測來確定需要提供哪些模塊環境變量才能加載模塊。但是,它不會將date.extensions.js選爲CommonJS,因爲沒有對module.exportsrequire調用進行分配。

明確地設置模塊格式,添加

packages: { 
    "apps/common/date.extensions.js": { 
    "format": "cjs" 
    }, 
    // ... 
} 

SystemJS現在將使用該元數據,而不是一個啓發式,以確定格式並且當其加載模塊將因此提供一種exports對象。

或者,由於該文件不需要是模塊,因此可以刪除export {}declare global包裝。