如何访问server.js文件之外的应用程序?

我有两个文件:

server.js

const app = express(); require('./server/config/crawlerBasedModels.config').basedModels() .then((models) => { app.locals.basedModels = models; console.log(app.locals.basedModels); }) .catch(err => console.log(err)); 

crawlerBasedModels.config:

 const fs = require('fs'); const Promise = require('bluebird'); module.exports = { basedModels: () => { return new Promise((res, rej) => { let basedModelsPath = require('../config/exportFolderPath'); const basedModels = JSON.parse(fs.readFileSync(basedModelsPath + '/basedModels.json')); if(basedModels) {console.log(basedModels); return res(basedModels);} return rej('couldnt load basedModels file!'); }); } }; 

在控制台我看到:未定义

我的问题是我怎样才能在我的应用程序中设置一个全局variables,将暴露整个应用程序的生命周期?

有两种方法可以做到这一点。

 <app.js> const app = module.exports = express(); app.locals.test = 'test is valid'; <anotherfile.js> const app = require('./app'); console.log(app.locals.test); 

现在,无论何时您需要app ,它都会设置app.locals,并且可以在另一个文件中访问它。

另一种方法是创build一个名为global.js的单独空白文件。

 <global.js> empty file <test1.js> const global = require('./global'); global.test = 'setting var in test1.js'; <test2.js> const global = require('./global'); console.log('global vars %j', global); <node.js runtime> > const a = require('./test1.js') > const b = require('./test2.js'); global vars {"test":"setting var in test1.js"} 

唯一需要注意的是在你访问全局variables之前需要test1。 但是,你的用例也要求在app.locals中设置一些东西,然后在别的地方使用它。