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

标签 reactjs webpack next.js

我在 _document.js 中包含了几个静态文件和字体,如果 next.config 中指定了这些静态文件和字体,我希望将它们添加为 assetPrefix 前缀。 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 具有如下代码:

<link
    rel="stylesheet"
    type="text/css"
    href={'/static/bootstrap.css'}
 />

我认为这可能是 webpack 的事情,所以我也标记了它。

最佳答案

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

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;

关于reactjs - 使用 NextJS,我想以编程方式从 next.config.js 访问 assetPrefix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56992714/

相关文章:

react : Why do we use nodeJs in creating react app?

angularjs - 使用 Jasmine 对 angular 1.x 组件进行单元测试(使用 Typescript、Webpack)

javascript - Next.js - 如何在 <head> 内添加带有文字 onload 属性字符串值的 <link> 标记?

reactjs - 更改 "next export"的文件夹

javascript - 如何使用 Enzyme 和 Jest 测试 Formik Fields?

javascript - 使用 React 以类似于 Markdown 的方式向用户评论添加功能

javascript - 为什么 React useState 返回常量数组

Angular 2 和 Webpack 延迟加载

webpack - Laravel 混合 : config to convert images to base 64

javascript - 如何从循环中使用下一张图片加载多张图片?