Reactjs 有了NextJS,我想从next.config.js以编程方式访问assetPrefix

Reactjs 有了NextJS,我想从next.config.js以编程方式访问assetPrefix,reactjs,webpack,next.js,Reactjs,Webpack,Next.js,我在我的\u document.js中包含了几个静态文件和字体,如果在next.config.js中指定了这些文件和字体,我想将它们作为前缀添加到assetPrefix。我当前的next.config.js如下所示: module.exports = (phase) => { return withTypescript( withCSS( withImages( withOffl

我在我的
\u document.js
中包含了几个静态文件和字体,如果在
next.config.js
中指定了这些文件和字体,我想将它们作为前缀添加到
assetPrefix
。我当前的
next.config.js
如下所示:

module.exports = (phase) => {
        return withTypescript(
            withCSS(
                withImages(
                    withOffline({
                        env,
                        useFileSystemPublicRoutes: false,
                        assetPrefix: isProd ? 'https://d28d4ipdckjadl.cloudfront.net' : '',
                        inlineImageLimit: 16384,
                        ...
<link
    rel="stylesheet"
    type="text/css"
    href={'/static/bootstrap.css'}
 />
也就是说,我的
\u document.js
有如下代码:

module.exports = (phase) => {
        return withTypescript(
            withCSS(
                withImages(
                    withOffline({
                        env,
                        useFileSystemPublicRoutes: false,
                        assetPrefix: isProd ? 'https://d28d4ipdckjadl.cloudfront.net' : '',
                        inlineImageLimit: 16384,
                        ...
<link
    rel="stylesheet"
    type="text/css"
    href={'/static/bootstrap.css'}
 />


我想可能是网页包的问题,所以我也在标记它。

根据客户端/服务器端的需要,尝试使用
assetPrefix
的值创建
publicRuntimeConfig
和/或
serverRuntimeConfig
对象

module.exports=(阶段)=>{
用typescript返回(
用CSS(
带图像(
带离线({
环境,
useFileSystemPublicRoutes:false,
assetPrefix:isProd?“https://d28d4ipdckjadl.cloudfront.net' : '',
publicRuntimeConfig:{
我的资产前缀:isProd?“https://d28d4ipdckjadl.cloudfront.net' : ''
},
服务器运行时配置:{
我的资产前缀:isProd?“https://d28d4ipdckjadl.cloudfront.net' : ''
}
}
然后您可以访问
\u document.js
中的变量,如下所示:

从“next/config”导入getConfig;
...
const MY_ASSET_PREFIX=getConfig().publicRuntimeConfig.MY_ASSET_PREFIX;

至少这两个值都在同一个文件中。我可以这样做,但我希望我只能访问一个值。拥有两个真理不是最佳选择,需要记住这一点。