2016-01-28 65 views
3

在快递,我想我的微小移动到requierd文件:我可以将变量传递给所需的文件吗?

app.js:

var app = express(); 
var minify = require("./minify.js"); 

在该文件中我尝试设置我的模板引擎。

minify.js:

var app = express(); 
app.engine('html', mustacheExpress()); 

后来,当我尝试用用在app.js渲染引擎,我得到的是没有模板引擎设置错误。如果我在同一个文件中运行它,它会起作用。我认为问题在于我声明了两次app变量。我如何将app变量传递给minify.js?

回答

4

的问题是,你定义app变量,您目前通过调用express()实例全新express实例。

你需要做的就是开始使用功能,使您可以通过PARAMS(还有其他的方法了,但是这是一个会为你工作):

// app.js 
var app = express(); 
var minify = require('./minify'); // don't include .js! 
minify(app); // CALL the function that minify.js exports, passing params 

// minify.js 
module.exports = function(app) { 
    // because app comes as a parameter, it's the very same you've created in app.js 
    app.engine('html', mustacheExpress()); 
} 

同样,也有很多不同的方法和适当的方法,取决于你想要做什么,但是这会在你的情况下完成这项工作。阅读关于NodeJS的更多信息,它需要系统。

3

您可以将app.js中的'app'传递给您的模块,如Andrey所说的使用函数。例如,你可以像这样做太:

minify.js

module.exports = { 
    setAppEngine : function(app) { 
     app.engine([...]); 
    } 
} 

,并要求它像这样在你的app.js

app.js

var app = express(); 
var minify = require("./minify.js").setAppEngine(app); 

此解决方案非常有用,因为您可以设置并致电minify.js中的其他方法。

app.js

var app = express(); 
var minify = require("./minify.js"); 

minify.setAppEngine(app); 
:例如,你可以在 minify.js具有相同的代码做
相关问题