@sentry/browser
^ 5.11.0@sentry/node
^ 5.11.0node
v12.7.0У меня есть приложение nextjs, и я следовал этому руководству, предоставленному сообществом nextjs . Проблема в том, что после создания и запуска моего приложения оно выдает следующую ошибку:
[ error ] ./node_modules/@sentry/node/esm/integrations/console.js
Module not found: Can't resolve 'console' in '/.../node_modules/@sentry/node/esm/integrations'
Я перестроил свое приложение и удалил блокировку пряжи и папку сборки, но ничего не произошло! Хотя у меня есть каталог в моих node_modules!
Ошибка возникает, когда я пытаюсь импортировать Sentry следующим образом:
import * as Sentry from '@sentry/node';
Я думаю, проблема была в версии @zeit/next-source-maps
которую я изменил на:
@zeit/next-source-maps": "0.0.4-canary.1
.
Затем я очистил node_modules
удалил yarn.lock
и перестроил! Теперь он работает!
@afsanefda У меня все еще есть эта проблема после очистки node_modules
remove yarn.lock
и наличия зависимости @zeit/next-source-maps": "0.0.4-canary.1
... Вы сделали что-нибудь еще, что могло бы решить проблему?
Добавлять:
if (!options.isServer) {
config.resolve.alias['@sentry/node'] = '@sentry/browser'
}
в next.config.js
Любое решение для этого?
Любое решение для этого?
Это однозначно из-за несогласованности версий. пожалуйста, проверьте версии, как описано выше.
Точно выполнила предложение, и у меня все еще есть эта проблема.
@ 5tormTrooper Не уверен, что это поможет, но я забыл добавить () в оператор require:
const withSourceMaps = require('@zeit/next-source-maps')()
я все еще сталкиваюсь с этой проблемой:
@ часовой / узел ^ 5.11.0
Кто-нибудь может помочь?
@philkeys уже пробовали это. Не повезло.
Я столкнулся с такой же проблемой после обновления Next.js с « 9.1.6 » до « 9.3.5 ». После некоторой отладки я решил, что « @ sentry / node » каким-то образом оказался в клиентском пакете. Кажется, что эта линия вдруг перестала работать.
if (!isServer) {
config.resolve.alias['@sentry/node'] = '@sentry/browser';
}
Мы снова откроем эту проблему? Я попытался обновить все пакеты и не могу понять, как это решить.
Есть ли решение этой проблемы? Кажется, это такая общая функция, которую должна поддерживать любая библиотека из коробки.
Как видите, все упомянутые проблемы уже каким-то образом решены путем изменения конфигурации разработчика. Я не могу предоставить какое-либо конкретное решение, если мне не будет представлена конкретная проблема и случай повторного использования.
@kamilogorek спасибо за информацию. Я вижу только одну ссылку на проблему, которая, кажется, не имеет отношения. OP предложил обновить @zeit/next-source-maps
(который мы не используем)
Я попытаюсь создать репозиторий воспроизведения, хотя вам придется предоставить файл .env
с токенами часового самостоятельно.
любое решение?
Мне удалось заставить его работать, точно воспроизведя приведенный пример . Я снова столкнулся с этой проблемой при переключении на SSG ( next export
) Поскольку нам не нужны серверные отчеты для SSG, мы просто удалили псевдоним webpack (+ все, что ссылается на @sentry/node
), и он снова @sentry/browser
.
Если у вас есть эта строка:
if (!isServer) { config.resolve.alias['@sentry/node'] = '@sentry/browser'; }
Затем вам также необходимо установить @sentry/browser
. Ошибка немного вводит в заблуждение ...
в моем next.config.js я уже выполнял метод fs: "empty" с псевдонимом sentry / node с браузером, когда! isServer, однако добавляя туда console.log, чтобы вы могли видеть, что ваш журнал не печатается на консоли.
копаясь в исходном коде плагинов, которые у меня были (withSourceMaps, withSass, withOptimizedImages) и добавляя console.log в каждый из них, я понял, что моя базовая конфигурация не отправляется во внешние плагины с этим методом цепочки (кажется, они возвращают сами конфиг, но что-то еще не работает):
module.exports = withBundleAnalyzer(
withSourceMaps(
withSass(
withOptimizedImages(baseConfig)
)
)
так что ваш fs: "empty" никогда не будет уважаться.
решение, которое я нашел для этого, состояло в том, чтобы установить пакет next-compose-plugins, а затем изменить экспорт на
module.exports = withPlugins(
[
[withOptimizedImages],
[withSass],
[withSourceMaps],
[withBundleAnalyzer],
],
baseConfig
);
Если у вас есть эта строка:
if (!isServer) { config.resolve.alias['@sentry/node'] = '@sentry/browser'; }
Затем вам также необходимо установить
@sentry/browser
. Ошибка немного вводит в заблуждение ...
@vpontis , у меня это не сработало. Я использую Sentry с Vue.js и добавил это в vue.config.js
chainWebpack: (config) => {
config.resolve.alias['@sentry/node'] = '@sentry/browser'
}
Я хочу добавить, если у кого-то все еще есть проблемы.
Если вы используете next-source-maps, убедитесь, что для пакета @zeit/next-source-maps
установлено значение 0.0.4-canary.1
Мне даже не нужен next.config.js, и я не использую часовую с next-source-maps
поэтому я не уверен, какое решение для меня.
if (process.env.NEXT_PUBLIC_SENTRY_DSN) {
Sentry.init({
enabled: true,
dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
});
}
это то, что я вставил в свой _app.js
после того, как установил @sentry/node @sentry/browser @sentry/react
но все равно получаю эту ошибку.
Я столкнулся с этим, когда начал использовать @ zeit / next-source-maps ":" и 0.0.4-canary.1!
Чтобы исправить это, я удалил плагин, а затем добавил важную часть кода в следующую конфигурацию:
const { dev } = options
if (!dev) {
config.devtool = options.devtool || 'source-map'
for (const plugin of config.plugins) {
if (plugin.constructor.name === 'UglifyJsPlugin') {
plugin.options.sourceMap = true
break
}
}
if (config.optimization && config.optimization.minimizer) {
for (const plugin of config.optimization.minimizer) {
if (plugin.constructor.name === 'TerserPlugin') {
plugin.options.sourceMap = true
break
}
}
}
}
Это не проблема с часовым, а со следующим плагином карты источников.
Самый полезный комментарий
@ 5tormTrooper Не уверен, что это поможет, но я забыл добавить () в оператор require:
const withSourceMaps = require('@zeit/next-source-maps')()