Где разместить / найти systemjs.конфиг.файл js в проекте angularJS2?
Я новичок в angular 2 и пытаюсь использовать ng2-datetime-picker в своем проекте. Теперь после установки пакета ng2-datetime-picker при запуске проекта получил 404 ошибка с указанием ng2-datetime-picker не найден, пройдя через некоторые блоги, я узнал, что мне нужно добавить конфигурацию в systemjs.конфиг.JS-файл, но когда я прошел через свой проект, я не вижу никаких systemjs.конфиг.файл JS в моем проекте. Итак, мой вопрос:
- где делает systemjs.конфиг.файл js существует?
-
это код ниже, предназначенный для systemjs.конфиг.файл JS
2 ответов
вам нужно создать " systemjs.конфиг.JS-файла" и загрузить его из индекса.html, как обычный скрипт:
<script src="systemjs.config.js"></script>
убедитесь, что вы также включить систему.JS перед конфигурационным скриптом:
<script src="node_modules/systemjs/dist/system.src.js"></script>
следующий скрипт загружает первый модуль:
System.import('app').catch(function (err) { console.error(err); });
по умолчанию (в соответствии с вашей systemjs.конфиг.js), SystemJS будет искать приложение.js или app / main.js.
в вашем systemjs.конфиг.файл JS, нужно сопоставить пакет узла в путь есть указатель.JS или пакет.JSON, который указывает, где находится модуль. Модуль должен быть совместим с вашим загрузчиком модулей, который вы собираетесь использовать: AMD, UMD, CommonJS, SystemJS, es6 и т. д.
в вашем systemjs должно работать следующее.конфиг.файл js:
'paths': {
'npm:':'node_modules/'
},
'map': {
'ng2-datetime-picker': 'npm:ng2-datetime-picker'
...
},
'packages': {
'ng2-datetime-picker': 'dist/ng2-datetime-picker.umd.js'
}
или вы можете напрямую отобразить файл UMD:
'paths': {
'npm:':'node_modules/'
},
'map': {
'ng2-datetime-picker': 'npm:ng2-datetime-picker/dist/ng2-datetime-picker.umd.js'
...
}
следующее будет работать только с CommonJS/AMD / SystemJS в качестве индекса.js использует 'require' синтаксис:
'paths': {
'npm:':'node_modules/'
},
'map': {
'ng2-datetime-picker': 'npm:ng2-datetime-picker'
...
},
'packages': {
'ng2-datetime-picker': 'dist/index.js'
}
редактировать
это должно работать:
// packages tells the System loader how to load when no filename and/or no extension
packages: {
app: { main: 'boot.js', defaultExtension: 'js' },
rxjs: { defaultExtension: 'js' },
'ng2-datetime-picker': { main: 'dist/ng2-datetime-picker.umd.js', defaultExtension: 'js' }
}
для тех, кто ищет systemjs.config.js
содержание. Это будет что-то похожее на это, вы можете настроить его согласно вашим требованиям.
/**
* System configuration for Angular 2 samples
* Adjust as necessary for your application needs.
*/
(function(global) {
// map tells the System loader where to look for things
var map = {
'app': 'app', // 'dist',
'@angular': 'node_modules/@angular',
'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api',
'rxjs': 'node_modules/rxjs'
};
// packages tells the System loader how to load when no filename and/or no extension
var packages = {
'app': { main: 'main.js', defaultExtension: 'js' },
'rxjs': { defaultExtension: 'js' },
'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' },
};
var ngPackageNames = [
'common',
'compiler',
'core',
'forms',
'http',
'platform-browser',
'platform-browser-dynamic',
'router',
'router-deprecated',
'upgrade',
];
// Individual files (~300 requests):
function packIndex(pkgName) {
packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' };
}
// Bundled (~40 requests):
function packUmd(pkgName) {
packages['@angular/'+pkgName] = { main: 'bundles/' + pkgName + '.umd.js', defaultExtension: 'js' };
}
// Most environments should use UMD; some (Karma) need the individual index files
var setPackageConfig = System.packageWithIndex ? packIndex : packUmd;
// Add package entries for angular packages
ngPackageNames.forEach(setPackageConfig);
var config = {
map: map,
packages: packages
};
System.config(config);
})(this);
и ваш индекс.html будет выглядеть так: (позаботьтесь о порядке .файл JS)
<head>
<meta charset="UTF-8">
<title>My Angular 2 App!</title>
<!-- css -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/flatly/bootstrap.min.css">
<style>body { padding: 50px 0; }</style>
<!-- js -->
<!-- load the dependencies -->
<script src="node_modules/core-js/client/shim.min.js"></script>
<script src="node_modules/zone.js/dist/zone.js"></script>
<script src="node_modules/reflect-metadata/Reflect.js"></script>
<!-- load our angular app with systemjs -->
<script src="node_modules/systemjs/dist/system.src.js"></script>
<script src="systemjs.config.js"></script>
<script>
System.import('app').catch(function(err) { console.error(err); });
</script>
</head>