无法在TypeScript和Systemjs中加载具有扩展名js的模块

时间:2017-04-07 11:22:12

标签: javascript typescript visual-studio-2013 systemjs

Systemjs的请求不会将扩展 .js 添加到网址。

这些是我的TypeScript类

customer.ts

import {Address} from "./Address";

export class Customer {
    private _customerName: string = "";
    public CustomerAddress: Address = new Address();
    public set CustomerName(value: string) {
        if (value.length == 0) {
            throw "Customer Name is required"; 
        }
        this._customerName = value;
    }
    public get CustomerName() {
        return this._customerName;
    }
    Validate(): boolean {
        return this._customerName != '';
    }
}

address.ts

export class Address {
    public Street1: string = "";
}

使用以下Systemjs初始化代码

System.config({
      defaultExtension: 'js',
});
System.import("Customer.js").then(function (exports) {
      var cust = new exports.Customer();
});

Customer.js已成功加载,但Address.js未加载。

Address.js的GET请求不包含 .js 扩展名 在控制台中产生以下请求

GET http://localhost:65401/Address 404 (Not Found).

我尝试将customer.ts中的以下代码更新为以下

import {Address} from "./Address.js";

但它在语法上是错误的,它在VS2013中显示错误。

如何强制Systemjs将扩展" .js" 添加到GET请求。

谢谢

1 个答案:

答案 0 :(得分:1)

defaultExtension关键字不是顶级配置选项。它需要在packages指令下,请参阅:https://github.com/systemjs/systemjs/blob/master/docs/config-api.md#packages

这就是为什么它被忽略而且SystemJS没有附加扩展名。您可以定义一个“全局”包,这可能是确保扩展始终附加到每个导入路径的最简单方法:

SystemJS.config({
  packages: {
    '.': {
      defaultExtension: 'js'
    }
  }
});