使用NextJS,我想以编程方式从next.config.js访问assetPrefix

时间:2019-07-11 15:31:12

标签: reactjs webpack next.js

如果在_document.js中指定了一个静态文件和字体,我想在其中加上assetPrefix作为前缀。我当前的next.config.js如下:

next.config.js

也就是说,我的module.exports = (phase) => { return withTypescript( withCSS( withImages( withOffline({ env, useFileSystemPublicRoutes: false, assetPrefix: isProd ? 'https://d28d4ipdckjadl.cloudfront.net' : '', inlineImageLimit: 16384, ... 具有如下代码:

_document.js

我认为这可能是webpack的事情,所以我也对其进行了标记。

1 个答案:

答案 0 :(得分:1)

根据客户端/服务器端的需求,尝试创建具有publicRuntimeConfig值的serverRuntimeConfig和/或assetPrefix对象。

module.exports = (phase) => {
        return withTypescript(
            withCSS(
                withImages(
                    withOffline({
                        env,
                        useFileSystemPublicRoutes: false,
                        assetPrefix: isProd ? 'https://d28d4ipdckjadl.cloudfront.net' : '',
                        publicRuntimeConfig: {
                            MY_ASSET_PREFIX: isProd ? 'https://d28d4ipdckjadl.cloudfront.net' : ''
                        },
                        serverRuntimeConfig: {
                            MY_ASSET_PREFIX: isProd ? 'https://d28d4ipdckjadl.cloudfront.net' : ''
                        }
}

然后您可以像这样访问_document.js中的变量:

import getConfig from 'next/config';

...

const MY_ASSET_PREFIX = getConfig().publicRuntimeConfig.MY_ASSET_PREFIX;