I have a Node.js & App AngularJS scritta in TypeScript, in cui sto provando a caricare i moduli utilizzando System.js.Caricamento dei moduli in TypeScript utilizzando System.js
Funziona correttamente se si importa solo una classe per specificare un tipo. per esempio:
import {BlogModel} from "./model"
var model: BlogModel;
Tuttavia, quando cerco di istanziare una variabile con una classe importata, ottengo un'eccezione a run-time. per esempio:
import {BlogModel} from "./model"
var model: BlogModel = new BlogModel();
Uncaught ReferenceError: require is not defined
io uso CommonJS. Non posso usare AMD perché ho un progetto per lato server e lato client. Questo è il motivo per cui utilizzo System.js per caricare i moduli nel client.
Questa è la mia definizione 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>
Questo è il contenuto del file di 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;
}
}
E questa è la linea di JS che produce l'eccezione:
var model_1 = require("./model");
Uncaught ReferenceError: require is not defined
Qualsiasi aiuto sarà profondamente apprezzato!
presumo che model.ts contenga la definizione per 'BlogModel', puoi condividere il codice per questo, anche tu devi avere systemjs importati nella pagina html principale, puoi condividere il codice anche per quello? Idealmente non è necessario importare tutti i moduli e verrà caricato come e quando necessario, quindi System.import ('classes.ts') . (Null, console.error.bind (console)); dovrebbe essere sufficiente, anche tu non hai bisogno dell'estensione di ts, –
@Madhu Ranjan Ho modificato la domanda originale e aggiunto il contenuto di model.ts e dei tag di script per System.js – Alon