typescript - 如何使用 Next.js 中的自定义 webpack 配置将“cmd”提供给 Sentry(@sentry/nextjs 包)的浏览器?
问题描述
在我的包 json 中,我使用
"webpack": "5.58.1",
"@sentry/nextjs": "6.13.3",
"typescript": "4.0.5",
"next": "11.0.1",
我运行next build
,它编译没有错误。
然后我运行next dev
并在浏览器中查看 http://localhost:3000/
我在浏览器控制台中看到此错误:
Uncaught TypeError: Cannot read properties of undefined (reading 'cwd')
at eval (VM244 parsers.js:42)
at Module../node_modules/@sentry/node/esm/parsers.js (_app.js?ts=1634221348526:3118)
at Module.options.factory (webpack.js?ts=1634221348526:675)
at __webpack_require__ (webpack.js?ts=1634221348526:37)
at fn (webpack.js?ts=1634221348526:353)
at eval (VM243 backend.js:9)
at Module../node_modules/@sentry/node/esm/backend.js (_app.js?ts=1634221348526:2975)
at Module.options.factory (webpack.js?ts=1634221348526:675)
at __webpack_require__ (webpack.js?ts=1634221348526:37)
at fn (webpack.js?ts=1634221348526:353)
at eval (VM220 index.js:42)
at Module../node_modules/@sentry/node/esm/index.js (_app.js?ts=1634221348526:3008)
at Module.options.factory (webpack.js?ts=1634221348526:675)
at __webpack_require__ (webpack.js?ts=1634221348526:37)
at fn (webpack.js?ts=1634221348526:353)
at eval (VM175 index.server.js:10)
at Module../node_modules/@sentry/nextjs/esm/index.server.js (_app.js?ts=1634221348526:2909)
at Module.options.factory (webpack.js?ts=1634221348526:675)
at __webpack_require__ (webpack.js?ts=1634221348526:37)
at fn (webpack.js?ts=1634221348526:353)
at eval (sentry.client.config.js:2)
at Module../sentry.client.config.js (_app.js?ts=1634221348526:2031)
at Module.options.factory (webpack.js?ts=1634221348526:675)
at __webpack_require__ (webpack.js?ts=1634221348526:37)
at __webpack_exec__ (_app.js?ts=1634221348526:14966)
at _app.js?ts=1634221348526:14967
at Function.__webpack_require__.O (webpack.js?ts=1634221348526:86)
at _app.js?ts=1634221348526:14968
at webpackJsonpCallback (webpack.js?ts=1634221348526:1255)
at _app.js?ts=1634221348526:9
在next.config.js
我尝试通过将其添加到我的自定义 webpack 配置中来抑制错误:
config.resolve.fallback = {
"fs": false,
"os": false,
"path": false,
"domain": false,
"http": false,
"https": false,
"tty": false,
"stream": false,
"child_process": false,
"process": false,
};
我也尝试"process": "0.11.10",
在我的 package.json 中安装,然后将其添加到我的自定义 webpack 配置中next.config.js
:
plugins: [
new webpack.ProvidePlugin({
process: 'process/browser',
})
],
这些都没有奏效。
关于如何在运行时解决此 TypeError 的任何想法?
解决方案
我不得不这样做:
plugins: [
new webpack.ProvidePlugin({
'global.process': 'process/browser',
})
],
并从中删除 "process":false
config.resolve.fallback = {
"fs": false,
"os": false,
"path": false,
"domain": false,
"http": false,
"https": false,
"tty": false,
"stream": false,
"child_process": false,
"process": false,
};
推荐阅读
- android - 在Android Studio中,导入tensorflow lite模型后,生成的示例代码如何使用?
- ios - 在 SwiftUI 中阅读 colorScheme?
- laravel - 在 Laravel 中显示两个不相关的表
- python - 在另一个列表中列出,但第一个列表的元素不需要在第二个列表中一个接一个出现
- java - 尝试在 redisson API 中为 rxjava2 客户端获取排序集中某个范围内的元素计数时出现 ClassCastException
- c++ - 创建一个对象向量,该类包含四个成员,并且能够访问和删除整个对象
- java - 夸库斯 + 派头。处理持久性异常(唯一约束)
- javascript - 调用带有 promise 的控制器函数无法使用 then 函数等待
- javascript - React - “TypeError: undefined is not a function (near '...formFields.map...')”
- javascript - 在 ExpressJS 中传递 Javascript amqplib 通道来路由中间件