在 Vercel 上部署 Node.js 应用程序时出现配置包问题 - “配置属性未定义”错误

问题描述 投票:0回答:1

我使用 Node.js 中的 config 包来组织我的所有环境变量,它在我的本地环境中完美运行。但是,当我将应用程序部署到 Vercel 时,遇到以下错误:

警告:“生产”的 NODE_ENV 值与任何部署配置文件名都不匹配。警告:参见 https://github.com/node-config/node-config/wiki/Strict-Mode 警告: 配置目录中找不到配置:/var/task/config 警告:要禁用此警告,请在 环境。错误:配置属性“logging.level”不是 定义的 在 Config.get (/var/task/server/node_modules/config/lib/config.js:179:11) 在对象。 (/var/task/server/logger/index.js:5:22) 在Module._compile(节点:内部/模块/cjs/loader:1256:14) 在 Module._extensions..js (节点:内部/模块/cjs/loader:1310:10) 在Module.load(节点:内部/模块/cjs/loader:1119:32) 在 Module._load (节点:内部/模块/cjs/loader:960:12) 在 t..e._load (/var/task/___vc/__launcher/__launcher.js:14:2299) 在 Module.require (节点:内部/模块/cjs/loader:1143:19) 在需要时(节点:内部/模块/cjs/helpers:119:18) 在对象。 (/var/task/server/index.js:8:16) INIT_REPORT 初始化持续时间:716.96 ms 阶段:调用状态:错误错误类型: Runtime.ExitError 错误:运行时退出并出现错误:退出状态 1 Runtime.ExitError 配置文件位于./config 文件夹:development.json、生产.json 和 default.json。细节 关于该应用程序的信息如下:

package.json

{
  "name": "My app",
  "version": "1.0.0",
  "description": "A Application",
  "main": "index.js",
  "engines": {
    "node": "18.x"
  },
  "scripts": {
    "dev": "nodemon index.js",
    "start": "node index.js"
  },
  "author": "hhh",
  "license": "ISC",
  "dependencies": {
    "bcrypt": "^5.1.0",
    "compression": "^1.7.4",
    "config": "^3.3.8",
    "cors": "^2.8.5",
    "crypto-js": "^4.1.1",
    "express": "^4.18.2",
    "express-async-errors": "^3.1.1",
    "handlebars": "^4.7.7",
    "helmet": "^6.0.0",
    "joi": "^17.7.0",
    "jsonwebtoken": "^8.5.1",
    "lodash": "^4.17.21",
    "mongodb": "^5.3.0",
    "mongoose": "^6.7.3",
    "node-schedule": "^2.1.1",
    "nodemailer": "^6.8.0",
    "socket.io": "^4.6.1",
    "uuid": "^9.0.0",
    "winston": "^3.8.2"
  },
  "devDependencies": {
    "nodemon": "^2.0.20"
  }
}

vercel.json

{
  "version": 2,
  "builds": [
    {
      "src": "./index.js",
      "use": "@vercel/node"
    }
  ],
  "routes": [
    {
      "src": "/(.*)",
      "dest": "/"
    }
  ]
}

./config/default.json

{
  "logging": {
    "level": "info",
    "trace": true
  }
}

现在,从应用程序:

const config = require("config");
const level = config.get("logging.level"); // ERROR

我也尝试设置环境变量NODE_CONFIG_DIR='./config',仍然不起作用😩。请帮帮我吗?

node.js vercel
1个回答
0
投票

在使用配置之前添加以下两行:

const express = require('express');
process.env['NODE_CONFIG_DIR'] = path.join(path.resolve("./"),"config/")
© www.soinside.com 2019 - 2024. All rights reserved.