mam dwa kątowe 2 aplikacje w następującej strukturze:importu wspólna usługa, która mieszka poza folderu aplikacji w kątowym 2 aplikacji na maszynie przy użyciu systemjs
/app
/app1
/app2
/shared
Wewnątrz moich kątowych 2 komponentów (napisanych pismem maszynowym), importuję kilka modułów (znajdujących się w tym samym folderze) bez żadnych problemów: importuj {TestService1} z './test1.service';
Jednak gdy próbowałem zaimportować coś z folderu współdzielonego, nie można było załadować wymaganego modułu w czasie wykonywania (przeglądarce). importuj {TestService2} z "../shared/test2.service"; Przeglądarka mówi: http://something.something.darkside/app/test2.service 404 (nie znaleziono).
Mogę użyć zestawu defaultJSExtensions do wartości true, co spowoduje naprawienie problemu. Ale chciałbym wiedzieć, jak poprawnie skonfigurować systemsm, aby poradzić sobie z tą sytuacją.
systemjs.config.js
(function (global) {
var ngPackageNames = [ bla, ng2packages... ];
//ng2 apps
var ngApps = [
'/app/app1',
'/app/app2'
];
var map = {
'@angular': '/node_modules/@angular',
'rxjs': '/node_modules/rxjs'
};
var packages = {
'rxjs': { defaultExtension: 'js' }
};
//adds package entries for each of the needed ng2 packages
ngPackageNames.forEach(function (pkgName) {
packages['@angular/' + pkgName] = System.packageWithIndex
? { main: 'index.js', defaultExtension: 'js' }
: { main: '/bundles/' + pkgName + '.umd.js', defaultExtension: 'js' };
});
//adds map entries and package entries for the apps
ngApps.forEach(function (app) {
var appName = app.substring(app.lastIndexOf('/') + 1);
map[appName] = app;
packages[appName] = { main: appName + '.main.js', defaultExtension: 'js' };
});
System.config({ map: map, packages: packages });
})(this);
nie jest to kwestia importu maszynopis ów problem. To jak SystemJs ładuje pliki i moduły. Aby SystemJs mógł odwoływać się do importu, jego ścieżka musi być załadowana do SystemJS, stąd potrzeba mapowania. –
Wystarczy, że potwierdzimy: potrzebujemy tylko dodatkowego wpisu systemjs.config.js, ponieważ ten plik znajduje się nad głównym punktem wejścia do aplikacji, prawda? np .. ..? systemjs wciąż żąda pliku z serwera. Chciałbym zrozumieć, jak to się dzieje. Ale zaznaczę to jako odpowiedź, gdy tylko potwierdzisz punkt numer jeden, aby inni mogli użyć tego jako punktu odniesienia. – SynBiotik
Tak, to prawda. Idealnie, gdybyś miał ogólne mapowanie dla folderu "aplikacja", powinien poprawnie załadować pliki. Jednakże, ponieważ istnieją 2 aplikacje, które by mu to zaleciły. –