gpt4 book ai didi

javascript - 异步加载 vue.config.js 用于预渲染元数据

转载 作者:行者123 更新时间:2023-12-03 06:38:05 25 4
gpt4 key购买 nike

我正在尝试将一些数据异步加载到我的 Vue.js 应用程序的配置中,供 Chris Fritz 的 PrerenderSPA webpack 插件使用,但是 - 它似乎没有预渲染任何路由。

当我对值进行硬编码时 - 它们预渲染得很好,但在尝试异步加载 webpackConfiguration 时似乎失败了。

这是我淡化的尝试:

const configPromise = new Promise(async (resolve, reject) => {

// API Fetch for Prismic Routes:
const blogRoutes = await prismicRoutes;

let renderRoutes = [
...generalRoutes,
...blogRoutes,
];

// then at some point call `resolve()` with the config object:
resolve({
pwa: {
name: 'App',
themeColor: '#000000',
msTileColor: '#000000',
appleMobileWebAppCapable: 'yes',
appleMobileWebAppStatusBarStyle: 'black',

// configure the workbox plugin
workboxPluginMode: 'InjectManifest',
workboxOptions: {
// swSrc is required in InjectManifest mode.
swSrc: 'src/service-worker.js',
// ...other Workbox options...
}
},
configureWebpack: {
plugins: [
new PrerenderSPAPlugin({
staticDir: path.join(__dirname, 'dist'),
routes: renderRoutes,
}),
],
},
});
});

module.exports = configPromise;

这可以通过以下方式实现:
async function exportConfig() {
module.exports = await configPromise;
}

exportConfig();

有没有人在构建时实现了 vue.config.js 的这种异步加载?

最佳答案

configureWebpack 选项尚不支持 Promises,同时您可以 fetch the data before running the build
附加说明:如果某些路由在预渲染时从远程 API 获取数据,并且该 API 不支持 CORS,则需要配置 proxy .
例子:

// build.prerender.js
const prerenderConfig = {
// ...
server: {
proxy: {
'^/api': {
target: process.env.API_URL,
pathRewrite: {
'^/api' : ''
}
}
}
}
}

module.exports = (api) => {
// @api refers to vue-cli api
api.registerCommand('build:prerender', async (args) => {
const { routes } = await fetch(...)
prerenderConfig.routes = routes
api.chainWebpack(config => {
config
.plugin('prerender')
.use(PrerenderSPAPlugin, [prerenderConfig])
.end()
})

await api.service.run('build', args)
})
}

关于javascript - 异步加载 vue.config.js 用于预渲染元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61542711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com