如何正确地在节点js中导出和要求?
我在node/express中读到了一篇关于导出/需要的教程,不知道是否有人可以用我的例子给我解释一下: 为什么我在app.js中的路由不起作用?我必须输出和需要什么才能使其正常工作?非常感谢!
index.js:
'use strict'
var express = require('express');
var app = express();
module.exports = app;
var PORT = process.env.PORT || 1337;
app.listen(PORT, function() {
console.log('Server is listening!');
})
app.js:
var express = require('express');
var bodyParser = require('body-parser');
var path = require('path');
var app = express();
//var app=require('./index.js');
module.exports = function() {
app.use(express.static(path.join(__dirname, '../public')));
app.use(express.static(path.join(__dirname, '../browser')));
}
解决方案
- 您的示例将无法正常工作,至少是因为您在两个文件中声明了两个单独的Express服务器
var app = express()
。 - 此代码不是最适合用于导出/请求的代码,因为此类服务器初始化通常放在一个文件中。
但不管怎样,如果你想使用这个例子并让它工作,我们就这样做:
./index.js
'use strict'
var express = require('express');
var setupServing = require('./setupServing.js'); //import our function
var PORT = process.env.PORT || 1337;
var app = express(); //create express app
setupServing(app); //call imported function to config our app
app.listen(PORT, function() { //start
console.log('Server is listening!');
})
./setupServing.js
var express = require('express');
var path = require('path');
//export function which can configure static serve for app
module.exports = function(app) { //take app as an argument
app.use(express.static(path.join(__dirname, '../public')));
}
请注意,此示例仍然不够合理,我认为您不会在任何实际项目中遇到这样的代码,但无论如何,它都会工作,并演示NodeJS中的导出/要求。
相关文章