我有一个Node.js &用TypeScript编写的AngularJS应用程序,我尝试使用System.js加载模块。使用System.js在TypeScript中加载模块
它工作正常,如果我只导入类来指定类型。 e.g:
import {BlogModel} from "./model"
var model: BlogModel;
然而,当我尝试实例变量与导入的类,我会在运行时异常。 e.g:
import {BlogModel} from "./model"
var model: BlogModel = new BlogModel();
Uncaught ReferenceError: require is not defined
我使用CommonJS的。我无法使用AMD,因为我有一个针对服务器端和客户端的项目。这就是我使用System.js在客户端加载模块的原因。
这是我System.js定义:
<script src="/assets/libs/systemjs-master/dist/system-polyfills.js"></script>
<script src="/assets/libs/systemjs-master/dist/system.src.js"></script>
<script>
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import('classes.ts')
.then(null, console.error.bind(console));
System.import('model.ts')
.then(null, console.error.bind(console));
</script>
这是model.ts文件的内容:
import {User} from "./classes";
import {Post} from "./classes";
export class BlogModel{
private _currentUser: User;
private _posts: Post[];
get currentUser(){
return this._currentUser;
}
set currentUser(value: User){
this._currentUser = value;
}
get posts(){
return this._posts;
}
set posts(value: Post[]){
this._posts = value;
}
}
这是JS线产生异常:
var model_1 = require("./model");
Uncaught ReferenceError: require is not defined
任何帮助将深表感谢!
我假设model.ts包含'BlogModel'的定义,你可以分享代码,你也必须在主html页面导入systemjs,你能分享代码吗?理想情况下,你不必导入所有的模块,它会在需要的时候加载,所以System.import('classes.ts') .then(null,console.error.bind(console));应该就足够了,你也不需要ts扩展, –
@Madhu Ranjan我编辑了原始问题,并添加了model.ts的内容和System.js的脚本标记 – Alon