我正在使用NodeJS。我有一个 configuration.js 模块,我在 index.js 中使用。
configuration.js
let spctrConfiguration = {
dataPath: '/data/',
mongoDB: 'datadb',
mongoHost: 'mongo',
mongoPort: 27017,
redisHost: 'redis',
redisPort: 6379,
getLogPath: () => {
console.log(this); //this is {}
return path.join(this.dataPath, 'spctrworker_logs');
},
getHtmlPath: () => {
return path.join(this.dataPath, 'spctrworker_html');
}
};
if (process.env.SPCTR_MODE == 'DEVELOPMENT') {
spctrConfiguration.dataPath = __dirname + '/dev_data/';
spctrConfiguration.mongoHost = '127.0.0.1';
spctrConfiguration.redisHost = '127.0.0.1';
}
module.exports = spctrConfiguration;
index.js
let spctrConfiguration = require('./config/configuration');
let app = express();
let logPath = spctrConfiguration.getLogPath();
let htmlPath = spctrConfiguration.getHtmlPath();
当然,由于this.dataPath
未定义,因此会引发错误。
我的问题是为什么this
是一个空对象。
我期待的是this
函数中的getLogPath
引用spctrConfiguration
对象。由于函数getLogPath
是从spctrConfiguration
中的index.js
调用的。非常感谢任何帮助!