Loading modules in TypeScript using System.js
我有一个的Node.js和AngularJS应用程序写在打字稿,其中我试图加载使用System.js模块。
如果我只导入一个类来指定一个类型,它工作正常。 例如:
1 2 | import {BlogModel} from "./model" var model: BlogModel; |
但是,当我尝试使用导入的类实例化变量时,在运行时出现异常。 例如:
1 2 | import {BlogModel} from "./model" var model: BlogModel = new BlogModel(); |
Uncaught ReferenceError: require is not defined
我使用CommonJS。 我不能使用AMD,因为我在服务器端和客户端都有一个项目。 这就是为什么我使用System.js在客户端中加载模块的原因。
这是我的System.js定义:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <script src="/assets/libs/systemjs-master/dist/system-polyfills.js"> <script src="/assets/libs/systemjs-master/dist/system.src.js"> 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)); |
这是model.ts文件的内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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行:
1 | var model_1 = require("./model"); |
Uncaught ReferenceError: require is not defined
任何帮助将不胜感激!
让我们尝试简化一些事情:
1)如下配置您的systemjs:
1 | System.defaultJSExtensions = true; |
2)确保将您的
3)在bootstrap.ts中:
1 2 3 | import {BlogModel} from "./model" let model = new BlogModel(); console.log(model); |
3)通过单次调用System.import引导您的应用程序:
1 | System.import('bootstrap').then(null, console.error.bind(console)); |
尝试这些步骤,我想您会解决您的问题的。