【发布时间】:2023-03-11 06:40:02
【问题描述】:
我已经安装了express-nuxt template,我想知道如何从 express(API 文件夹)访问 nuxt.config.js 中的 privateRuntimeConfig。我想到的一种方法是将变量放在 .env 文件中,然后为 express 服务器安装 dotenv 包,但我认为仅使用 Nuxt 可能会更好。
【问题讨论】:
标签: vue.js express nuxt.js backend
我已经安装了express-nuxt template,我想知道如何从 express(API 文件夹)访问 nuxt.config.js 中的 privateRuntimeConfig。我想到的一种方法是将变量放在 .env 文件中,然后为 express 服务器安装 dotenv 包,但我认为仅使用 Nuxt 可能会更好。
【问题讨论】:
标签: vue.js express nuxt.js backend
我们通过将 Nuxt 配置导入到配置 Express 应用程序的文件中,并使用 defu 将公共和私有运行时配置组合起来,就像 Nuxt 本身所做的那样:
// nuxt.config.js
export default {
publicRuntimeConfig: {},
privateRuntimeConfig: { redis: { url: process.env['REDIS_URL'] } }
};
// api/index.js
import express from 'express';
import defu from 'defu';
import { createClient as createRedisClient } from 'redis';
const app = express();
import nuxtConfig from '../nuxt.config.js';
let runtimeConfig;
app.use((req, res, next) => {
if (!runtimeConfig) {
// Load Nuxt config once, at runtime
runtimeConfig = defu(nuxtConfig.privateRuntimeConfig, nuxtConfig.publicRuntimeConfig);
}
next();
});
// Subsequent middlewares will then be able to read from `runtimeConfig`
app.use((req, res, next) => {
const redisClient = createRedisClient({ url: runtimeConfig.redis.url });
next();
});
export default app;
【讨论】: