在express中,我正在尝试将我的缩小移动到一个需要的文件:
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?
答案 0 :(得分:6)
问题在于您定义了新 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的更多信息,它需要系统。
答案 1 :(得分:3)
你可以通过应用程序'从 app.js 到你的缩小,使用你的模块中的函数,如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 中设置和调用其他方法。例如,您可以使用 minify.js 中的相同代码:
app.js
var app = express();
var minify = require("./minify.js");
minify.setAppEngine(app);