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

时间:2017-10-05 23:00:09

标签: javascript node.js express

我有两个文件:

server.js

crawlerBasedModels.config:

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));
控制台中的

我看到: 未定义

我的问题是如何在我的应用中设置一个全局变量,该变量将在整个应用生命周期中公开?

1 个答案:

答案 0 :(得分:0)

有两种方法可以实现这一目标。

<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,并且您可以在另一个文件中访问它。

另一种方法是使用一个名为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"}

这里唯一需要注意的是在访问全局变量之前必须要求test1。但是,您的用例也要求在app.locals中设置一些东西,然后在其他地方使用它。