我使用 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',仍然不起作用😩。请帮帮我吗?
在使用配置之前添加以下两行:
const express = require('express');
process.env['NODE_CONFIG_DIR'] = path.join(path.resolve("./"),"config/")