使用 NextJS,我想以编程方式从 next.config.js 访问 assetPrefix
With NextJS, I want to programmatically access assetPrefix from next.config.js
我在我的 _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,
...
也就是说,我的_document.js
有如下代码:
<link
rel="stylesheet"
type="text/css"
href={'/static/bootstrap.css'}
/>
我认为它可能是 webpack 的东西所以我也标记了它。
根据 client-side / server-side 的需要,尝试使用 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;
我在我的 _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,
...
也就是说,我的_document.js
有如下代码:
<link
rel="stylesheet"
type="text/css"
href={'/static/bootstrap.css'}
/>
我认为它可能是 webpack 的东西所以我也标记了它。
根据 client-side / server-side 的需要,尝试使用 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;