Это мой порядок файлов в karma.conf.js для запуска тестов karma jasmine uint ..
файлы: ['app / bower_components / jquery / dist / jquery.min.js',
'приложение / bower_components / angular / angular.min.js',
'приложение / bower_components / raven-js / dist / raven.js',
'приложение / bower_components / raven-js / plugins / angular.js'
]
Событие, хотя я включил «app / bower_components / raven-js / plugins / angular.js», я получаю сообщение об ошибке, в котором говорится, что модуль «ngRaven» недоступен.
+1
Что мы можем здесь сделать? Я немного запутался. :)
Ой, я читал Stackoverflow. Он работает с пакетом angular-raven, но не с нашим.
Согласно текущей документации, плагин sentry angular теперь должен работать.
https://docs.getsentry.com/hosted/clients/javascript/integrations/angular/
Может быть, каталог dist отсутствует в app / bower_components / raven-js / plugins / angular.js?
Согласно документам [https://docs.getsentry.com/hosted/clients/javascript/integrations/angular/#bower] это должно быть:
<script src="/bower_components/raven-js/dist/plugins/angular.js"></script>
Следуя документации, angular не может найти модуль для меня. Однако решение переполнения стека работает для меня.
Может быть, каталог dist отсутствует в app / bower_components / raven-js / plugins / angular.js?
Это определенно сработает.
Если бы кто-нибудь из присутствующих мог предоставить мне конкретный пример, я был бы рад разобраться в этом.
@benvinegar https://plnkr.co/edit/S1Dk9t?p=preview это простой образец ошибки,
На основе https://github.com/getsentry/raven-js/blob/master/docs/integrations/angular.rst
Он говорит:
_ Обратите внимание, что эта сборка CDN автоматически инициализирует плагин Angular. _
Но импорт только того, что, как говорится в документации, вызывает ошибку, проверьте журнал в plnkr
[$ injector: nomod ] Модуль ngRaven недоступен! Вы либо неправильно написали имя модуля, либо забыли его загрузить. При регистрации модуля убедитесь, что вы указали зависимости в качестве второго аргумента.
Может это просто неверное толкование документации?
Есть новости по этому поводу? Я думаю , что угловой плагин работает только для CommonJS, так как это не на самом деле никогда не вызывается , когда только включая файл. Пожалуйста, исправьте, чтобы мы могли использовать плагин
Вот простейший пример после вашей страницы интеграции , который не работает: https://plnkr.co/edit/M5nt6Y?p=preview
@RobertBaron @mebibou - в обоих примерах вам нужно настроить Raven перед инициализацией вашего приложения. Плагины не инициализируются до вызова Raven.install()
.
Это есть во всех примерах документации , например:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
<script src="https://cdn.ravenjs.com/3.6.1/angular/raven.min.js"></script>
<script>Raven.config('https://<key>@app.getsentry.com/<project>').install();</script>
Хотя можно было бы сделать более явным, что сценарий вашего приложения (например, app.js
) должен появиться позже.
О, хорошо, это на самом деле идет вразрез со способом Angular, где мы обычно делаем такую конфигурацию в модуле, который требует ngRaven
, но это делает невозможным.
Я думаю, вам следует указать это в документации, поскольку это вообще не указано.
+1
См. # 413, @benvinegar. Готово ли оно к борьбе?
@Sija - учитывая, что люди продолжают
Не забудьте добавить полужирный шрифт ниже
Ворон
.config ('https: //
.addPlugin (Raven.Plugins.Angular)
.установить();
@theatrain помимо этого вам нужно добавить переопределение в свой package.json, если вы используете
Следующее ниже было моим исправлением, так как я использую gulp -inject
"overrides": {
"raven-js" : {
"main": [
"dist/raven.js",
"dist/plugins/angular.js"
]
}
},
Я также нашел хороший обходной путь для grunt, так как все было урезано и уменьшено:
Мой app.js
выглядел так:
'use strict';
angular
.module('sraApp', [
'ngRaven'
]);
Я создал еще один файл с названием raven.js
// redacted sensitive info
Raven
.config('https://<code>@sentry.io/<myapp>')
.addPlugin(Raven.Plugins.Angular)
.install();
И в index.html вместо встроенных скриптов:
<!-- build:js(.) scripts/vendor.js -->
<!-- bower:js -->
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/raven-js/dist/raven.js"></script>
<!-- endbower -->
<!-- Outside of auto-managed bower, but still inside compile -> vender.js -->
<script src="bower_components/raven-js/dist/plugins/angular.js"></script>
<!-- endbuild -->
<!-- build:js({.tmp,app}) scripts/scripts.js -->
<script src="scripts/raven.js"></script>
<script src="scripts/app.js"></script>
<!-- endbuild -->
Теперь, когда я grunt build:dist
который искажает / минимизирует, grunt оптимизирует мой скрипт, чтобы можно было зарегистрировать плагин. Выполнение встроенных скриптов не приведет к оптимизации, поэтому window.angular не подходит для автозагрузки плагина.
В целом поток выглядит следующим образом (документация верна)
angular
raven
raven/plugins/angular.js
ngRaven
но все сделано правильно, чтобы учесть уменьшение / уменьшениеТакже следует отметить, что большинство конфигураций может произойти позже (хотя вы пропускаете теги при любых проблемах во время начальной загрузки)
Например конфиг героку загружается постфактум.
'use strict';
angular.module('sraApp')
.run(function (Raven, HEROKU_APP_ID, HEROKU_APP_NAME, HEROKU_RELEASE_CREATED_AT, HEROKU_RELEASE_VERSION, HEROKU_SLUG_COMMIT, HEROKU_SLUG_DESCRIPTION, NODE_ENV) {
Raven.setRelease(HEROKU_RELEASE_VERSION);
Raven.setEnvironment(NODE_ENV);
Raven.setTagsContext({
release_date: HEROKU_RELEASE_CREATED_AT,
git_commit: HEROKU_SLUG_COMMIT,
slug_description: HEROKU_SLUG_DESCRIPTION,
application: {
name: HEROKU_APP_NAME,
id: HEROKU_APP_ID,
}
});
});
Есть новости по этому поводу? Также есть проблемы с нашим набором тестов кармы.
@xeroxoid У нас тоже были проблемы с этим во время тестов кармы, и мы смогли их обойти.
В нашем случае мы пропускали процедуру Raven.config().addPlugin().install()
в тестовой среде, потому что не хотели, чтобы они отправлялись на стражу.
Проблема заключается в том, что raven-js не работает с модулями "угловым способом" - а вместо этого регистрирует модуль ngRaven
случае, если вы вызвали Raven.config()
с DSN.
Метод addPlugin()
регистрирует модуль angular только в том случае, если конфигурация была настроена правильно (например, с определенным URL-адресом DSN).
Чтобы исправить это, мы сделали так, что Raven.config().addPlugin().install()
всегда запускается даже в нашем тестовом наборе, мы используем наш обычный URL-адрес DSN, а затем используем метод config.shouldSendCallback
чтобы заблокировать отправку на часовой в тестовой среде .
Это позволяет raven-js правильно зарегистрировать модуль angular.
Надеюсь, это поможет!
Мы делаем то же самое, но вместо этого передаем поддельный DSN (это для нашего dev env). Что-то вроде https://[email protected]/1
работает нормально (похоже, что raven применяет некоторую степень принуждения к свойствам URL-адреса, поэтому имя пользователя должно присутствовать вместе с путем).
Закрытие из-за длительного бездействия. В этой ветке также есть несколько обходных путей на всякий случай. Не стесняйтесь повторно открыть этот вопрос, если он по-прежнему актуален.
Самый полезный комментарий
О, хорошо, это на самом деле идет вразрез со способом Angular, где мы обычно делаем такую конфигурацию в модуле, который требует
ngRaven
, но это делает невозможным.Я думаю, вам следует указать это в документации, поскольку это вообще не указано.