app.get is not a function解决方案
在express4.x中app.js被申明为一个模块,而不是一个主程序入口,在文件的最后暴露出了这个模块,如下所示
app.js
module.exports = app;
但是我们在routes目录下的index.js文件中引用它却会出处,一下程序报:app.get is not a function
index.js
var app = require('../app');
var router = express.Router();
var photos = require('./photos');
/* GET home page. */
router.get('/', photos.list);
router.get('/upload', photos.form);
router.post('/upload', photos.submit(app.get('photos')));
module.exports = router;
原因在于,我们在app.js文件中先require()了index.js,这样在index.js加载的时候导致app模块还没暴露出来。
var index = require('./routes/index');
var users = require('./routes/users');
解决方案一:
在app.js中
var routes = require("./routes/index")
routes(app);
在index.js中
module.exports = function(app){
   //I got access to app.locals
}
解决方案二:把module.exports=app提前到require(./routes/'index')前面。
最佳解决方案:
使用req.app,它会引用当前正在使用这个中间件的express实例,也就是app了。
router.get('/', function (req, res) {
    var app =req.app;
    res.send('Hello! The API is at http://localhost:' + app.get("port") + '/api');
});												
											app.get is not a function解决方案的更多相关文章
- The App Life Cycle & The Main Function
		The App Life Cycle Apps are a sophisticated interplay between your custom code and the system framew ... 
- Uber使用Swift重写APP的踩坑经历及解决方案(转载)
		本文出自Uber移动架构和框架组负责人托马斯·阿特曼于2016年在湾区Swift峰会上的演讲,分享了使用Swfit重写Uber的好与坏.以下为译文: 我是托马斯·阿特曼,目前是Uber移动架构和框架组 ... 
- 【讨论】APP的免填邀请码解决方案
		00x0 具体需求 app中已注册的用户分享一个含有邀请码的二维码,分享到朋友圈新用户在朋友圈打开这个这个链接下载app.新用户安装后打开app后就自动绑定邀请码要求用户不填写任何东西 朋友老板出差给 ... 
- extjs之TypeError: d.read is not a function解决方案
		在创建如下代码时报出此错:TypeError: d.read is not a function Ext.define('shebyxgl_sheb_model', { extend: 'Ext.da ... 
- jQuery.form Ajax无刷新上传错误 (jQuery.handleError is not a function) 解决方案
		今天,随着ajaxfileupload时间firebug财报显示,"jQuery.handleError is not a function"错误.因为一旦使用jQuery.for ... 
- endsWith is not a function解决方案
		在写javascript脚本时,用某些方法,有时候会碰到"XXX is not a function"之类的报错. 出现这种情况,主要是因为某些方法在低版本浏览器上不支持.比如说& ... 
- 最快1天搭建短视频APP!阿里云短视频解决方案上线
		短视频行业的发展前景乐观是毋庸置疑的,整个短视频的市场规模一直在增长,网络数据显示2018年已经突破100亿大关,在2019年预测将超过200亿.那么,对于短视频从业者来讲,要持续推动业务的发展,必须 ... 
- flvjs的unload(),detachMediaElement(),destroy()报错,undefined,not a function解决方案
		首先,真的被网上一堆各种转载复制粘贴坑了不少,最后直接到GitHub上flvjs的看作者的demo和docs才解决,具体如下. 1.引入flvjs文件,新建实例 var flvUrl = '直播流地址 ... 
- vue2.0+mintui+hbuilder 打包移动端app之后出现空白页面的解决方案
		1.首先使用的是vue-cli构建的页面,用hbuildX打包成移动端的安装包(hbuildX打包成app的流程,请看自行搜索) 2.cnpm install build 生成dist文件夹,里面包含 ... 
随机推荐
- hadoop超租约报错:
			解决方法:修改linux打开文件最大限制Java代码 echo "fs.file-max = 65535" >> /etc/sysctl.conf echo " ... 
- Flex布局介绍
			Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性 任何一个容器都可以指定为 Flex 布局. .box{ display: -web ... 
- 多年iOS开发经验总结
			总结了几个月的东西终于能和大家分享了,不多说,直接看东西! 1.禁止手机睡眠 1 [UIApplication sharedApplication].idleTimerDisabled = YES; ... 
- 解决外部编辑器修改Eclipse文件延迟刷新【补充】
			在之前的文章,使用gulp解决外部编辑器修改Eclipse文件延迟刷新,原理是用gulp把更改过的项目文件直接复制一份到Tomcat的webapp.root下, 现在补充另外一种方法,双击Server ... 
- 如何创建一个Django项目
			Django 软件框架 软件框架是由其中的各个模块组成,每个模块负责特定的功能,模块与模块之间相互协作来完成软件开发. MVC简介 MVC框架的核心思想是:解耦,让不同的代码块之间降低耦合,增强代码的 ... 
- angualrJs清除定时器
			angualrJs清除定时器爬坑之路: 今天发现一个奇怪问题,放在自定义指令里边的定时器竟然在页面跳转之后,在另一个页面这个循环定时器还在执行,这肯定是不行的,会影响系统的性能. 我在angular里 ... 
- ZPL条码打印类
			using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ... 
- 1.ElasticSearch介绍及基本概念
			一.ElasticSearch介绍 一个采用RESTful API标准的高扩展性的和高可用性的实时性分析的全文搜索工具 基于Lucene[开源的搜索引擎框架]构建 ElasticSearch是一个面向 ... 
- 【学习】js学习笔记:内置顶层函数eval()的兼容用法
			今天学了一个内置顶层函数,eval();其作用是将字符串转换成javascript命令执行,但必须符合语法,否则会报错. 如果写成window.eval(),则其定义的变量会在全局生效. 但是,在IE ... 
- 转载:C#特性-表达式树
			原文地址:http://www.cnblogs.com/tianfan/ 表达式树基础 刚接触LINQ的人往往觉得表达式树很不容易理解.通过这篇文章我希望大家看到它其实并不像想象中那么难.您只要有普通 ... 
