我有一個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