2017-10-05 37 views
1

我有两个文件:如何访问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!'); 
    }); 
} 
}; 

控制台,我看到: 未定义

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

回答

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中设置一些内容,然后在其他地方使用它。

相关问题