【问题标题】:Access privateRuntimeConfig in express server在 express 服务器中访问 privateRuntimeConfig
【发布时间】: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


    【解决方案1】:

    我们通过将 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;
    
    

    【讨论】:

    • 感谢您的回答!但是如果我需要 env 道具来连接数据库呢?
    • 我添加了示例 Nuxt 运行时配置和 Express 中间件,以展示如何使用环境变量连接到 Redis。这可能来自实际的服务器环境,或者 Nuxt 将从 .env 文件中读取(如果存在)。
    • 每次发出请求时不会创建一个redis实例吗?那不是没有必要吗?并且数据库连接与 express API 不在同一个文件中
    • 还有一件事,我如何在 express 后端使用 ESM?我应该安装一些东西还是如何安装?顺便说一句,正如我所说,我正在使用来自 nuxt 社区的 express-nuxt 模板
    • Redis 连接只是一个示例,用于说明如何在 Express 应用程序的上下文中读取 Nuxt 的运行时配置的原始问题的答案。具体如何使用它取决于您的用例。
    猜你喜欢
    • 2013-12-31
    • 2021-10-04
    • 2018-08-21
    • 2020-12-20
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多