在 JS 文件中找不到配置目录
Can't find config directory in JS file
这是我的目录结构:
/node
. /config
. default.js
. node_modules
. /controllers
. myfile.js
. other files
. app.js
这里是一些用 myfile.js
编写的代码
const express = require('express');
const app = express();
const mysql = require('mysql');
const path = require('path');
const config = require('config');
const bodyParser = require('body-parser');
const moment = require('moment');
app.use(bodyParser.json({type: '*/*'}));
var client;
const redis = require("redis");
client = redis.createClient();
client.on("error", function (err) {
console.log("Error " + err);
});
const connectionPool = mysql.createPool({
host: config.get('database.host'),
user: config.get('database.user'),
password: config.get('database.password'),
database: config.get('database.dbname'),
connectionLimit: 2
});
function selectUpdatedData() {
connectionPool.query("SELECT * FROM rc_devices_notifications", function (err, rows, fields) {
//DO STUFF
process.exit();
});
}
selectUpdatedData();
现在,当我 运行 使用 node myfile.js
这个文件时,我看到以下错误:
WARNING: No configurations found in configuration directory:/home/rc-user/node/controllers/config
WARNING: To disable this warning set SUPPRESS_NO_CONFIG_WARNING in the environment.
/home/rc-user/node/node_modules/config/lib/config.js:181
throw new Error('Configuration property "' + property + '" is not defined');
^
Error: Configuration property "database.host" is not defined
at Config.get (/home/rc-user/node/node_modules/config/lib/config.js:181:11)
at Object.<anonymous> (/home/rc-user/node/controllers/update_trackers.js:20:18)
at Module._compile (module.js:573:32)
at Object.Module._extensions..js (module.js:582:10)
at Module.load (module.js:490:32)
at tryModuleLoad (module.js:449:12)
at Function.Module._load (module.js:441:3)
at Module.runMain (module.js:607:10)
at run (bootstrap_node.js:420:7)
at startup (bootstrap_node.js:139:9)
然而,当我运行 app.js(我的服务器,也使用配置)时,它没有显示错误。它获取配置文件。
我做错了什么?
编辑:default.json 文件:
{
"database" : {
"host" :"something",
"user" : "something",
"password" : "something",
"dbname" : "something"
},
"parameters" : {
"apnkey" : "something",
"apnkeyid" : "something",
"apnteamid" : "something",
"googleAPI" : "something",
"authorization" : "something",
"push_app_id" : "something"
}
}
这是配置目录中的配置文件(default.json)。
如你所误
No configurations found in configuration directory:/home/rc-user/node/controllers/config
由于您是从子文件夹启动您的应用程序,因此 config
程序包正在从该相对路径中查找配置目录。
请使用
node controllers/myfile.js
这样config
就会从项目的根目录找到config目录。
您可以使用环境变量NODE_CONFIG_DIR
来设置自定义配置目录路径。详细了解 NODE_CONFIG_DIR。
The default NODE_CONFIG_DIR is the /config
directory under the current working directory
这是我的目录结构:
/node
. /config
. default.js
. node_modules
. /controllers
. myfile.js
. other files
. app.js
这里是一些用 myfile.js
编写的代码const express = require('express');
const app = express();
const mysql = require('mysql');
const path = require('path');
const config = require('config');
const bodyParser = require('body-parser');
const moment = require('moment');
app.use(bodyParser.json({type: '*/*'}));
var client;
const redis = require("redis");
client = redis.createClient();
client.on("error", function (err) {
console.log("Error " + err);
});
const connectionPool = mysql.createPool({
host: config.get('database.host'),
user: config.get('database.user'),
password: config.get('database.password'),
database: config.get('database.dbname'),
connectionLimit: 2
});
function selectUpdatedData() {
connectionPool.query("SELECT * FROM rc_devices_notifications", function (err, rows, fields) {
//DO STUFF
process.exit();
});
}
selectUpdatedData();
现在,当我 运行 使用 node myfile.js
这个文件时,我看到以下错误:
WARNING: No configurations found in configuration directory:/home/rc-user/node/controllers/config WARNING: To disable this warning set SUPPRESS_NO_CONFIG_WARNING in the environment. /home/rc-user/node/node_modules/config/lib/config.js:181 throw new Error('Configuration property "' + property + '" is not defined'); ^ Error: Configuration property "database.host" is not defined at Config.get (/home/rc-user/node/node_modules/config/lib/config.js:181:11) at Object.<anonymous> (/home/rc-user/node/controllers/update_trackers.js:20:18) at Module._compile (module.js:573:32) at Object.Module._extensions..js (module.js:582:10) at Module.load (module.js:490:32) at tryModuleLoad (module.js:449:12) at Function.Module._load (module.js:441:3) at Module.runMain (module.js:607:10) at run (bootstrap_node.js:420:7) at startup (bootstrap_node.js:139:9)
然而,当我运行 app.js(我的服务器,也使用配置)时,它没有显示错误。它获取配置文件。
我做错了什么?
编辑:default.json 文件:
{
"database" : {
"host" :"something",
"user" : "something",
"password" : "something",
"dbname" : "something"
},
"parameters" : {
"apnkey" : "something",
"apnkeyid" : "something",
"apnteamid" : "something",
"googleAPI" : "something",
"authorization" : "something",
"push_app_id" : "something"
}
}
这是配置目录中的配置文件(default.json)。
如你所误
No configurations found in configuration directory:/home/rc-user/node/controllers/config
由于您是从子文件夹启动您的应用程序,因此 config
程序包正在从该相对路径中查找配置目录。
请使用
node controllers/myfile.js
这样config
就会从项目的根目录找到config目录。
您可以使用环境变量NODE_CONFIG_DIR
来设置自定义配置目录路径。详细了解 NODE_CONFIG_DIR。
The default NODE_CONFIG_DIR is the
/config
directory under the current working directory