Angular2 не может импортировать ng2-bootstrap
Я не могу импортировать ng2-bootstrap
layout.jade
html
head
title Angular 2 QuickStart
// 1. Load libraries
script(src="/node_modules/angular2/bundles/angular2-polyfills.js")
script(src="/node_modules/systemjs/dist/system.src.js")
//script(src="/node_modules/ng2-bootstrap/ng2-bootstrap.js")
script(src="/node_modules/rxjs/bundles/Rx.js")
script(src="/node_modules/angular2/bundles/angular2.dev.js")
// 2. Configure SystemJS
script.
System.config({
packages: {
app: {
//format: 'register',
//defaultExtension: 'js',
defaultJSExtensions: true
}
},
paths: {
'ng2-bootstrap/*': 'node_modules/ng2-bootstrap/*.js'
}
});
System.import('app/boot')
.then(null, console.error.bind(console));
// 3. Display the application
body
my-app Loading...
выразить
app.use('/node_modules', express.static(__dirname + '/node_modules'));
app.component.ts
//import "ng2-bootstrap/ng2-bootstrap";
import {Component} from 'angular2/core';
import {Alert} from 'ng2-bootstrap/ng2-bootstrap';
import {firstComponent} from './component/first.component';
@Component({
//directives: [Alert],
directives: [firstComponent,Alert],
selector: 'my-app',
template: `
<h1>My First Angular 2 App</h1>
<h2> helllo</h2>
<first></first>
<alert type="info">ng2-bootstrap hello!</alert>
`
})
export class AppComponent { }
консоль ошибок
GET http://localhost:3000/node_modules/ng2-bootstrap/components/accordion/accordion 404 (Not Found)
Error: XHR error (404 Not Found) loading http://localhost:3000/node_modules/ng2-
а также больше ошибок, таких как re: невозможно импортировать компонент?
Ответы
Ответ 1
У меня была такая же проблема и я нашел эту ссылку полезной: https://github.com/valor-software/ng2-bootstrap/issues/50#issuecomment-165448962
Отрывок из наиболее релевантного кода:
System.JS config:
System.config({
packages: {
"app": {
"defaultExtension": "js"
},
"node_modules/ng2-bootstrap": {
"defaultExtension": "js"
}
},
paths: {
"ng2-bootstrap": "node_modules/ng2-bootstrap"
}
});
Затем вы можете просто импортировать его так:
import { Progressbar } from "ng2-bootstrap";
@Component({
selector: "my-app",
directives: [
Progressbar
],
template: "<progressbar></progressbar>"
})
Надеюсь, это поможет вам, как и со мной.
Ответ 2
Это сработало для меня.
В файле systemjs.config:
map: {
'ng2-bootstrap': 'node_modules/ng2-bootstrap/bundles/ng2-bootstrap.umd.js',
'moment': 'node_modules/moment/moment.js'
}
Мы должны упомянуть "момент", потому что ng2-bootstrap импортирует момент.
И в app.modules просто выполните следующие действия:
import {DatepickerModule} from 'ng2-bootstrap';
А также следующее:
@NgModule({
imports: [
....,
....,
DatepickerModule
],
declarations: [...],
providers: [...],
bootstrap: [AppComponent]
})
Ответ 3
Я не думаю, что текущие ответы являются удовлетворительными, так как они борется с симптомами и не решают основной проблемы.
Что я сделал, чтобы решить эту проблему:
System.config({
baseURL: '/node_modules',
"defaultJSExtensions": true,
map: {
app: '/app/'
}
paths: {
"moment": "moment/moment"
}
});
Строка 1: Поэтому я устанавливаю node_modules
мой базовый url, поэтому мне не нужно переписывать каждый импорт на основе пакета по пакетам.
Строка 2: Затем я говорю systemjs искать файлы JS по умолчанию.
Строка 3 - 5: Я сопоставляю все, что начинается с приложения, в каталог приложения. Поэтому SystemJs не будет пытаться найти мои собственные файлы в папке / node_modules.
Готово.
В строке 6 - 7 Один 'bugfix' должен был быть выполнен, когда SystemJS попытался загрузить momentjs непосредственно из / node_modules/, поэтому я установил его в свой собственный каталог. Странно..
Ответ 4
Я использую последнюю версию angular -cli 2.4.7 (webpack) и смог заставить ее работать.
Запустите это в своем angular приложении
npm install ng2-bootstrap bootstrap moment --save
Откройте следующие файлы и добавьте их в список
Вставить новую запись в массив стилей
# angular-cli.json
"styles": [
"styles.css",
"../node_modules/bootstrap/dist/css/bootstrap.min.css"
]
Импортировать желаемый модуль
# src/app/app.module.ts
...
import { DatepickerModule } from 'ng2-bootstrap';
...
@NgModule({
....
,
imports: [
DatepickerModule.forRoot(),
...
]
...})
И тебе хорошо идти!
Ответ 5
**>-------- NG2BOOTSTRAP--------->**
Используйте эти команды для добавления этих зависимостей к вашему package.json
- npm момент установки --save
- npm install ng2-bootstrap --save
Измените свой System.config.js на следующий код, так как эта карта сообщает загрузчику System, где искать код.
var map = {
'app': 'app', // 'dist',
'@angular': 'node_modules/@angular',
moment: 'node_modules/moment/moment.js',
'ng2-bootstrap': 'node_modules/ng2-bootstrap',
};
var packages = {
'app': { main: 'main.js', defaultExtension: 'js' },
'ng2-bootstrap': {defaultExtension: 'js' }
};
Добавьте Bootstrap в свой index.html
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
App.module.ts
import {Ng2BootstrapModule} из 'ng2-bootstrap/ng2-bootstrap';
И добавьте Ng2BootstrapModule к импорту @NgModule.
Тогда U хорош для ng2Bootstrap.
Ответ 6
В переменной systemjs.config.js
packages добавьте следующее для исправления проблемы
'ng2-bootstrap':
{
format: 'cjs', main: 'bundles/ng2-bootstrap.umd.js', defaultExtension: 'js'
}
Ответ 7
обновить системную переменную systemjs.config.js со следующими ошибками:
'ng2-bootstrap': {format: 'cjs', main: 'bundles/ng2-bootstrap.umd.js', defaultExtension: 'js'},//AND THIS