Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.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 特快专递及;将路由拆分为单独的文件_Javascript_Node.js_Express - Fatal编程技术网

Javascript 特快专递及;将路由拆分为单独的文件

Javascript 特快专递及;将路由拆分为单独的文件,javascript,node.js,express,Javascript,Node.js,Express,我有一个遵循标准express 4格式的express应用程序。也就是说,依赖项在顶部,然后是应用程序配置,然后是路由,最后是侦听 我试图将我的路由划分为分类文件(例如routes/authentication.js),但是应用程序没有执行依赖项,因此当我运行node app.js时,应用程序会中断,因为CLI说passport没有在routes/authentication.js中定义,而事实并非如此,因为它与所有其他依赖项一起定义在app.js的顶部 我想我的问题是,如何才能“共享”依赖项,

我有一个遵循标准express 4格式的express应用程序。也就是说,依赖项在顶部,然后是应用程序配置,然后是路由,最后是侦听

我试图将我的路由划分为分类文件(例如routes/authentication.js),但是应用程序没有执行依赖项,因此当我运行
node app.js
时,应用程序会中断,因为CLI说passport没有在routes/authentication.js中定义,而事实并非如此,因为它与所有其他依赖项一起定义在app.js的顶部

我想我的问题是,如何才能“共享”依赖项,这样我就不必在每个文件的顶部列出它们了?这就是我要求单独文件的方式:

app.js

require('./app/routes/authentication')(app);
module.exports = function (app) {
    [routes]
}
路由/authentication.js

require('./app/routes/authentication')(app);
module.exports = function (app) {
    [routes]
}

如果依赖模块在您已经有权访问应用程序的地方经常使用,则可以在应用程序上设置值,例如
app.config=require('./config')
。(但是,为了清晰起见,通常最好在该模块顶部指定特定模块的依赖项。除了为每个模块添加多一点代码之外,没有什么害处。)


此外,尽管可以使用构造函数并将
app
传递到此函数,但也可以使用模块来实现此目的。确保在创建应用程序时导出它,即
var-app=module.exports=express()var-app=require('../app')来自其他库。您将在一些Express示例中看到这一点。

在每个路由文件中列出依赖项有什么不对?Require()'d模块是缓存的,因此对您的性能不会有什么影响。它没有什么问题,我只是想知道是否有其他方法。另外,请查看是否使用Express 4的示例。