Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将Node.js文件拆分为多个文件_Javascript_Node.js - Fatal编程技术网

Javascript 如何将Node.js文件拆分为多个文件

Javascript 如何将Node.js文件拆分为多个文件,javascript,node.js,Javascript,Node.js,我有以下代码: var express = require("express"); var app = express(); var path = require("path"); app.use(express.static(__dirname + '/public')); app.get('/',function(req,res){ res.sendFile(path.join(__dirname+'/views/index.html')); res.set('Ac

我有以下代码:

var express = require("express");
var app     = express();
var path    = require("path");

app.use(express.static(__dirname + '/public'));

app.get('/',function(req,res){
  res.sendFile(path.join(__dirname+'/views/index.html'));
  res.set('Access-Control-Allow-Origin', '*');
}).listen(3000);

console.log("Running at Port 3000");

app.get('/test', function(req, res) {
    res.json(200, {'test': 'it works!'})
})
我会有很多服务(比如
测试
一个),我不想把它们都放在同一个文件中

我在Stack Overflow中读到另一个问题,我可以要求其他类似的文件:
var express=require(“./model/services.js”)
并在该文件中写入所有服务,但当我启动节点时,它会抛出
未定义的app


如何分离代码?

您可以在不同的文件中定义路由,比如test-routes.js,如下所示:

module.exports = function (app) {
    app.get('/test', function(req, res) {
        res.json(200, {'test': 'it works!'})
    })
}
var express = require("express");
var app     = express();
var path    = require("path");

app.use(express.static(__dirname + '/public'));

app.get('/',function(req,res){
  res.sendFile(path.join(__dirname+'/views/index.html'));
  res.set('Access-Control-Allow-Origin', '*');
}).listen(3000);

console.log("Running at Port 3000");

// import your routes
require('./test-routes.js')(app);
现在,在主文件server.js中,您可以像这样导入路由文件:

module.exports = function (app) {
    app.get('/test', function(req, res) {
        res.json(200, {'test': 'it works!'})
    })
}
var express = require("express");
var app     = express();
var path    = require("path");

app.use(express.static(__dirname + '/public'));

app.get('/',function(req,res){
  res.sendFile(path.join(__dirname+'/views/index.html'));
  res.set('Access-Control-Allow-Origin', '*');
}).listen(3000);

console.log("Running at Port 3000");

// import your routes
require('./test-routes.js')(app);

您的
test.js
应该如下所示:

var express = require('express');
var router = express.Router();

router.get('/test', function (req, res) {
  res.json(200, {'test': 'it works!'});
});

module.exports = router;
以及
app.js
(假设其他是与test.js类似定义的其他路由):


您可以在名为
test.js
的不同文件中要求
express
,并在其中包含所有测试代码。然后将其导出并稍后在主应用程序文件中调用。但是如果我在另一个文件中需要
express
,我如何获取应用程序的实例?在这种情况下,我仍然存在相同的问题,我得到的错误是test.js中不存在应用程序