@sentry/browser
^5.11.0@sentry/node
^5.11.0node
v12.7.0我有一个 nextjs 应用程序,我遵循了nextjs community提供的本教程。 问题是在构建并运行我的应用程序后出现此错误:
[ 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
删除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 thx 的信息。 我只看到一个似乎不相关的问题的参考。 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" 方法,当 !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 ,这对我不起作用。 我在 Vue.js 中使用 Sentry 并将其添加到 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,
});
}
是我在安装@sentry/node @sentry/browser @sentry/react
后放入_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')()