节点/快速,包括自定义模块
Node / Express, including custom modules
我目前正在将 Express 与 node 一起使用,在尝试从我的一个路由函数中使用自定义模块时遇到问题。这是我到目前为止所拥有的。
在我的应用程序.js文件中,我需要这样的模块。
c_controller = require( './core/c_controller' );
我知道这是正确的,因为我控制台将其注销并且显示正常。
c_controller模块如下所示。
var c_controller = {
styles: [],
script: '',
view: ''
};
c_controller.add_style = function( style ) {
this.styles.push( style );
return this;
},
c_controller.set_script = function( script ) {
this.script = script;
return this;
},
c_controller.set_view = function( view ) {
this.view = view;
return this;
},
c_controller.render = function() {
return { script: this.script,
styles: this.styles,
view: this.view };
}
exports.add_style = c_controller.add_style;
exports.set_script = c_controller.set_script;
exports.set_view = c_controller.set_view;
exports.render = c_controller.render;
出现的错误是 500 引用错误: 未定义c_controller。
现在我不确定我是否必须将 c_controller 对象传递到我的路由函数中,无论哪种方式,我都不确定如何做到这一点。
我任何人都可以向我解释这一点,以使其更清楚,那会很棒。
提前谢谢。
更新
下面是使用c_controller的代码
/*
* GET home page.
*/
exports.index = function(req, res){
c_controller.set_view( 'index' );
res.render( 'includes/overall_template', { c_controller.render() } );
};
现在,如果我需要将c_controller直接放入路由中,它可以工作。我宁愿只要求主应用程序文件中的模块,这样我就不必在每条路线上都这样做。有谁知道这是否可能??
由于您在c_controller
函数中使用this
,然后仅将函数分配给导出对象,因此函数将在编写this
而不是c_controller
时引用export
。
我认为修复它的最佳方法是导出整个c_controller
对象,如下所示:
module.exports = exports = c_controller;
如果要隐藏styles
、script
和view
变量,可以:
- 使用
c_controller
而不是this
- 在导出函数之前绑定函数,如下所示:
exports.add_style = c_controller.add_style.bind(c_controller)
尝试总结所有评论,以及您自己@DavidJones所说的话:
-
在自定义视图中,
c_controller
未知。您必须在视图的模块甚至视图函数本身中require
它。您也可以将其传递给视图类,但是我这使事情复杂化,并且更喜欢要求。 -
@Linus说的 - 考虑导出整个对象(不仅仅是函数),或者使用
bind
否则。
相关文章:
- 摩卡+柴+jsdom Can't加载自定义模块目录
- 如何测试运行 node-fluent-ffmpeg(异步模块)的自定义模块
- SugarCRM 7.5.0.1 中自定义模块的 docusign
- 使用CDN的自定义模块
- 将字段从自定义模块导入Odoo(V9)POS模块
- 在Drupal自定义模块中点击3次后,Drupal禁用按钮
- $injector:modulerr将自定义模块注入Angular应用程序
- angularjs自定义模块与$http注入
- Drupal7.x:在复杂地图的自定义模块中使用GoogleMapsJS
- 如何从自定义模块获取Magento中的字段数据
- 自定义模块:未捕获类型错误:未定义不是一个函数
- 使用 DOH 测试自定义模块
- 节点.js自定义模块
- 节点/快速,包括自定义模块
- 可以'无法在Firefox插件SDK中导入带有require()的自定义模块
- AngularJS-如何在配置函数中使用$routeProvider和自定义模块
- 从自定义模块模式Javascript库调用XMLHttpRequest时不会发生任何事情
- Spotify应用程序,创建自定义模块
- IntelliJ Javascript "找不到声明去"使用自定义模块路径时
- node.js的setInterval在自定义模块中不起作用