即使设置了 env,redis 端口和主机仍未定义

redis port and host undefined even though env are set

我正在使用 redis npm 包,每当我尝试连接它时,它都说 hostport 未定义。我打印出我的 process.env 对象,我可以看到 hostport 设置了值。只有当我将值传递到我的 Redis 模型 class 的构造函数时,它才变得未定义。有什么想法吗?

index.js

require('dotenv').config()


function startRedis() {
    const redisInstance = new Redis(
        process.env.REDIS_HOST,
        process.env.REDIS_PORT
    );
    
    redisInstance.init();
}



class Redis {
        constructor(redishost, redisport) {
            this.redishost = redishost;
            this.redisport = redisport;
        }
    
        async init() {
            try {
                this.redisClient = redis.createClient({
                    port: this.redisport, 
                    host: this.redishost
                });
                
            console.log("port: ", this.port)
            console.log("host: ", this.host)
    
            } catch(error) {
                console.log(`Error creating client due to: ${error}`)
            }
}

.env

REDIS_HOST="value here"
REDIS_PORT="port value here"

package.json

{
  "name": "app",
  "version": "0.0.1",
  "dependencies": {
    "redis": "^3.0.2",
    "dotenv": "^10.0.0"
  },
  "engines": {
    "node": ">=10.0.0"
  },
  "main": "index.js",
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "devDependencies": {
    "redis": "^3.0.2",
    "dotenv": "^10.0.0"
  }
}

Update 1: 添加了我的 package.json

正如我在这里看到的,如果 process.env.REDIS_HOST 有价值。

你有新的class名字

你的启动函数应该是这样的


function startRedis() {
    const redisInstance = new Redis(
        process.env.REDIS_HOST,
        process.env.REDIS_PORT
    );
    
    redisInstance.init();
}

而你 console.log 错误的值


class Redis {
        constructor(redishost, redisport) {
            this.redishost = redishost;
            this.redisport = redisport;
        }
    
        async init() {
            try {
                this.redisClient = redis.createClient({
                    port: this.redisport, 
                    host: this.redishost
                });
                
            console.log("port: ", this.redisport)
            console.log("host: ", this.redishost)
    
            } catch(error) {
                console.log(`Error creating client due to: ${error}`)
            }
}