express
4.17.14.18.2
lib/application.js~
lib/application.jsModified+19−2
Index: package/lib/application.js
===================================================================
--- package/lib/application.js
+++ package/lib/application.js
@@ -28,8 +28,15 @@
var flatten = require('array-flatten');
var merge = require('utils-merge');
var resolve = require('path').resolve;
var setPrototypeOf = require('setprototypeof')
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var hasOwnProperty = Object.prototype.hasOwnProperty
var slice = Array.prototype.slice;
/**
* Application prototype.
@@ -275,9 +282,9 @@
*
* In this case EJS provides a `.renderFile()` method with
* the same signature that Express expects: `(path, options, callback)`,
* though note that it aliases this method as `ejs.__express` internally
- * so if you're using ".ejs" extensions you dont need to do anything.
+ * so if you're using ".ejs" extensions you don't need to do anything.
*
* Some template engines do not follow this convention, the
* [Consolidate.js](https://github.com/tj/consolidate.js)
* library was created to map all of node's popular template
@@ -351,9 +358,19 @@
app.set = function set(setting, val) {
if (arguments.length === 1) {
// app.get(setting)
- return this.settings[setting];
+ var settings = this.settings
+
+ while (settings && settings !== Object.prototype) {
+ if (hasOwnProperty.call(settings, setting)) {
+ return settings[setting]
+ }
+
+ settings = Object.getPrototypeOf(settings)
+ }
+
+ return undefined
}
debug('set "%s" to %o', setting, val);