所以我有这个 nextjs 项目,我正在尝试向它添加 Sentry,但是有一个问题,我在 next.config.js 中的 nextConfig 变量是一个异步函数,自 v12.0.10 以来,nextjs 本身将其接受为
module.export
,但哨兵没有。您需要将 module.export
包装到一个 withSentryConfig
中,它的第一个参数必须是 nextConfig 但如果它是异步函数,则此函数不接受 nextConfig。
我的 next.config.js 文件如下所示:
const { withSentryConfig } = require('@sentry/nextjs');
const prismic = require('@prismicio/client');
const sm = require('./sm.json');
/** @type {import('next').NextConfig} */
const nextConfig = async () => {
const client = prismic.createClient(sm.apiEndpoint);
const repository = await client.getRepository();
const locales = repository.languages.map(lang => lang.id);
return {
reactStrictMode: true,
swcMinify: true,
compiler: {
styledComponents: true,
},
i18n: {
// These are all the locales you want to support in
// your application
locales: locales,
// This is the default locale you want to be used when visiting
// a non-locale prefixed path e.g. `/hello`
defaultLocale: locales[0],
localeDetection: false,
},
};
};
module.exports = withSentryConfig(
nextConfig,
{ silent: true },
{ hideSourcemaps: true },
);
有解决方法吗?
“@sentry/nextjs”:“^7.42.0”
“下一个”:“13.1.2”
反应”:“18.2.0”
我试过尝试以多种方式导出它,比如将 await 放在 nextConfig 前面并调用它,使用 .then 块而不是 async await 但似乎没有任何效果。
module.exports = withSentryConfig(
nextConfig(),
{ silent: true },
{ hideSourcemaps: true },
);
module.exports = withSentryConfig(
await nextConfig(),
{ silent: true },
{ hideSourcemaps: true },
);
但他们似乎没有工作。如果我将 nextConfig 转换为一个对象,手动输入 locales 变量,它就可以工作,所以我知道异步函数是这里的问题。
尝试创建一个名为
buildConfig
的异步函数,它返回一个用 withSentryConfig
包裹的对象。看下面...
const buildConfig = async () => {
const client = prismic.createClient(sm.apiEndpoint);
const repository = await client.getRepository();
const locales = repository.languages.map(lang => lang.id);
return withSentryConfig({
reactStrictMode: true,
swcMinify: true,
compiler: {
styledComponents: true,
},
i18n: {
// These are all the locales you want to support in
// your application
locales: locales,
// This is the default locale you want to be used when visiting
// a non-locale prefixed path e.g. `/hello`
defaultLocale: locales[0],
localeDetection: false,
},
}, {silent: true}, {hideSourceMaps: true});
}
module.exports = buildConfig();