无法在 TypeScript 和 Systemjs 中加载带有扩展 js 的模块
Unable to load module with extention js in TypeScript and Systemjs
Systemjs 的获取请求未将扩展名 .js 添加到 url.
这些是我的 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 请求。
谢谢
defaultExtension
关键字不是顶级配置选项。它需要在 packages
指令下,参见:https://github.com/systemjs/systemjs/blob/master/docs/config-api.md#packages
这就是为什么它被忽略并且 SystemJS 不附加扩展名的原因。您可以定义一个 "global" 包,这可能是确保扩展始终附加到每个导入路径的最简单方法:
SystemJS.config({
packages: {
'.': {
defaultExtension: 'js'
}
}
});
Systemjs 的获取请求未将扩展名 .js 添加到 url.
这些是我的 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 请求。
谢谢
defaultExtension
关键字不是顶级配置选项。它需要在 packages
指令下,参见:https://github.com/systemjs/systemjs/blob/master/docs/config-api.md#packages
这就是为什么它被忽略并且 SystemJS 不附加扩展名的原因。您可以定义一个 "global" 包,这可能是确保扩展始终附加到每个导入路径的最简单方法:
SystemJS.config({
packages: {
'.': {
defaultExtension: 'js'
}
}
});