У меня есть приложение Node.js & AngularJS, написанное на языке TypeScript, в котором я пытаюсь загрузить модули с помощью System.js.Загрузка модулей в TypeScript с использованием System.js
Он отлично работает, если я импортирую только класс, чтобы указать тип. например:
import {BlogModel} from "./model"
var model: BlogModel;
Однако, когда я пытаюсь создать экземпляр переменной с импортированным классом, я получаю исключение во время выполнения. например:
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
Любая помощь w плохо быть глубоко оцененным!
Я предполагаю, что model.ts содержит определение для 'BlogModel', вы можете поделиться этим кодом для этого, также вы должны импортировать systemjs на главной странице html, можете ли вы совместно использовать код? В идеале вам не нужно импортировать все модули, и он будет загружен по мере необходимости, поэтому System.import ('classes.ts') .then (null, console.error.bind (console)); должно быть достаточно, также вам не нужно расширение ts, –
@Madhu Ranjan Я отредактировал исходный вопрос и добавил содержимое model.ts и теги скриптов для System.js – Alon