Я не могу заставить их работать вместе. Я использую CLI Aurelia и сделал это аналогичным образом для других библиотек успешно (например, select2, spin, moment и numeral). Однако, похоже, я не могу получить тостр. Вот что я до сих пор.Как можно toastr.js работать в Aurelia и Typcript?
Сначала я побежал npm install toastr --save
и typings install dt~toastr --global --save
В aurelia.json
, в разделе поставщика-bundle.js, я добавил зависимость как таковые:
"jquery",
{
"name": "toastr",
"path": "../node_modules/toastr/build",
"main": "toastr.min",
"resources": [
"toastr.min.css"
],
"deps": ["jquery"]
}
UPDATE: Полные шаги к Repro
У меня установлены эти версии этих инструментов: узел (6.3.0), npm (3.10.3), аи (0.17.0)
Откройте командную строку и введите:
au new au-toastr
3 (Custom)
2 (Typescript)
3 (Sass)
1 (configure unit testing)
1 (Visual Studio Code)
1 (create project)
1 (install project dependencies)
cd au-toastr
npm install jquery --save
npm install toastr --save
typings install dt~jquery --global --save
typings install dt~toastr --global --save
Затем откройте aurelia.json
в редакторе и добавьте
"jquery",
{
"name": "toastr",
"path": "../node_modules/toastr/build",
"main": "toastr.min",
"resources": [
"toastr.min.css"
],
"deps": ["jquery"]
}
на дно зависимостей ,
Комментировать out line 1839 (declare var $: cssSelectorHelper;
) on typings/globals/angular-protractor/index.d.ts
из-за конфликта с файлом .d.ts jquery.
Заменить app.ts
содержимое с
import * as toastr from 'toastr';
export class App {
activate() {
toastr.info('blah');
}
}
ИЛИ
import 'toastr';
export class App {
activate() {
toastr.info('blah');
}
}
типа au run
в командной строке, а затем открыть браузер и перейти к URL, что командная строка говорит приложение доступно на (обычно http://localhost:9000
).
Попытка 1
import 'toastr';
export class ViewModel {
activate() {
toastr.info('blah');
}
}
Ошибка: ReferenceError: toastr не определен
Попытка 2
import {autoinject} from 'aurelia-framework';
import 'toastr';
@autoinject()
export class ViewModel {
constructor(private toastr: Toastr) {
}
activate() {
this.toastr.info('blah');
}
}
Ошибка: Ошибка типа: this.toastr.info не является функцией
Попытка 3
import * as toastr from 'toastr';
export class ViewModel {
activate() {
toastr.info('blah');
}
}
Ошибка: TypeError: toastr.Информация не является функцией
Покушение 4
import {autoinject} from 'aurelia-framework';
import * as toastr from 'toastr';
@autoinject()
export class ViewModel {
constructor(private toastr: Toastr) {
}
activate() {
this.toastr.info('blah');
}
}
Ошибка: TypeError: this.toastr.info не является функцией
Все вышеперечисленное если я запустил au build
из командной строки. У меня нет ошибок.
Я потерял то, чего не хватает или что еще могу попробовать. Любая помощь будет принята с благодарностью!
UPDATE: Я думаю, что это либо ошибка в aurelia-cli
или более вероятно, я обработку пакета неправильно как-то в отношении механизма aurelia-cli
нагрузки. Когда я получаю машинописный скелет со своего сайта, который использует jspm в качестве загрузчика модуля, и следуйте тем же самым шагам выше, тост работает просто отлично.
Любые идеи, как я могу заставить это работать с aurelia-cli?
Что работает для меня (но с простым ES6 + и без TypeScript): import toastr from 'toastr'; ' –
Да, это дает ошибку транспиляции в TypeScript. Как и 'import {Toastr} из 'toastr';' – peinearydevelopment
Вы пробовали попытку 2 или 4, но с 'this.toastr = toastr;' в конструкторе? Если это не то, что '@autoinject()' делает; Я не очень люблю свою Аурелию. –