[ https://issues.apache.org/jira/browse/COUCHDB-1223?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Johnny Weng Luu updated COUCHDB-1223: ------------------------------------- Description: When the file I require() is empty CouchDB throws an error. {"error":"compilation_error","reason":"Module require('kanso/core') raised error [\"error\", \"compilation_error\", \"Module require('lib/app') raised error [\\\"error\\\", \\\"invalid_require_path\\\", \\\"Object has no property \\\\\\\"views\\\\\\\". {\\\\\\\"views\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"app\\\\\\\":\\\\\\\"/**\\\\\\\\u000a * Values exported from this module will automatically be used to generate\\\\\\\\u000a * the design doc pushed to CouchDB.\\\\\\\\u000a */\\\\\\\\u000a\\\\\\\\u000amodule.exports = {\\\\\\\\u000a types: require('./types'),\\\\\\\\u000a shows: require('./shows'),\\\\\\\\u000a lists: require('./lists'),\\\\\\\\u000a views: require('./views'),\\\\\\\\u000a updates: require('./updates'),\\\\\\\\u000a filters: require('./filters'),\\\\\\\\u000a rewrites: require('./rewrites'),\\\\\\\\u000a validate_doc_update: require('./validate'),\\\\\\\\u000a events: require('./events')\\\\\\\\u000a};\\\\\\\\u000a\\\\\\\",\\\\\\\"events\\\\\\\":\\\\\\\"/**\\\\\\\\u000a * Bindings to Kanso events\\\\\\\\u000a */\\\\\\\\u000a\\\\\\\\u000avar events = require('kanso/events');\\\\\\\\u000a\\\\\\\\u000a\\\\\\\\u000a/**\\\\\\\\u000a * The init method fires when the app is initially loaded from a page rendered\\\\\\\\u000a * by CouchDB.\\\\\\\\u000a */\\\\\\\\u000a\\\\\\\\u000a/**\\\\\\\\u000a * events.on('init', function () {\\\\\\\\u000a * // app initialization code goes here...\\\\\\\\u000a * });\\\\\\\\u000a */\\\\\\\\u000a\\\\\\\\u000a\\\\\\\\u000a/**\\\\\\\\u000a * The sessionChange event fires when the app is first loaded and the user's\\\\\\\\u000a * session information becomes available. It is also fired whenever a change\\\\\\\\u000a * to the user's session is detected, for example after logging in or out.\\\\\\\\u000a */\\\\\\\\u000a\\\\\\\\u000a/**\\\\\\\\u000a * events.on('sessionChange', function (userCtx, req) {\\\\\\\\u000a * // session change handling code goes here...\\\\\\\\u000a * });\\\\\\\\u000a */\\\\\\\\u000a\\\\\\\\u000a\\\\\\\\u000a/**\\\\\\\\u000a * The updateFailure event fires when an update function returns a document as\\\\\\\\u000a * the first part of an array, but the client-side request to update the\\\\\\\\u000a * document fails.\\\\\\\\u000a */\\\\\\\\u000a\\\\\\\\u000aevents.on('updateFailure', function (err, info, req, res, doc) {\\\\\\\\u000a alert(err.message || err.toString());\\\\\\\\u000a});\\\\\\\\u000a\\\\\\\",\\\\\\\"filters\\\\\\\":\\\\\\\"/**\\\\\\\\u000a * \\\\\\\\u000a */\\\\\\\",\\\\\\\"lists\\\\\\\":\\\\\\\"/**\\\\\\\\u000a * Lists\\\\\\\\u000a */\\\\\\\",\\\\\\\"rewrites\\\\\\\":\\\\\\\"//------------------------------------------------------------------------------\\\\\\\\u000a// Init\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000a// Rewrites\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000amodule.exports = [{\\\\\\\\u000a \\\\\\\\\\\\\\\"method\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"GET\\\\\\\\\\\\\\\",\\\\\\\\u000a \\\\\\\\\\\\\\\"from\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"/tests\\\\\\\\\\\\\\\",\\\\\\\\u000a \\\\\\\\\\\\\\\"to\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"_show/tests\\\\\\\\\\\\\\\"\\\\\\\\u000a}, {\\\\\\\\u000a \\\\\\\\\\\\\\\"method\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"*\\\\\\\\\\\\\\\",\\\\\\\\u000a \\\\\\\\\\\\\\\"from\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"*\\\\\\\\\\\\\\\",\\\\\\\\u000a \\\\\\\\\\\\\\\"to\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"../../../*\\\\\\\\\\\\\\\"\\\\\\\\u000a}];\\\\\\\",\\\\\\\"shows\\\\\\\":\\\\\\\"//------------------------------------------------------------------------------\\\\\\\\u000a// Init\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000avar templates = require('kanso/templates');\\\\\\\\u000a\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000a// Shows\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000aexports.tests = function(doc, req) {\\\\\\\\u000a\\\\\\\\u000a var scripts = templates.render('tests.html', req, {});\\\\\\\\u000a \\\\\\\\u000a var body = templates.render('base.html', req, {\\\\\\\\u000a \\\\\\\\\\\\\\\"title\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"Jasmine Spec Runner\\\\\\\\\\\\\\\",\\\\\\\\u000a \\\\\\\\\\\\\\\"scripts\\\\\\\\\\\\\\\": scripts,\\\\\\\\u000a \\\\\\\\\\\\\\\"content\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\u000a });\\\\\\\\u000a\\\\\\\\u000a return {\\\\\\\\u000a \\\\\\\\\\\\\\\"headers\\\\\\\\\\\\\\\": {\\\\\\\\u000a \\\\\\\\\\\\\\\"Content-Type\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"text/html\\\\\\\\\\\\\\\"\\\\\\\\u000a },\\\\\\\\u000a \\\\\\\\\\\\\\\"body\\\\\\\\\\\\\\\": body\\\\\\\\u000a };\\\\\\\\u000a\\\\\\\\u000a};\\\\\\\\u000a\\\\\\\\u000aexports.not_found = function(doc, req) {\\\\\\\\u000a return {\\\\\\\\u000a \\\\\\\\\\\\\\\"title\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"404 - Not Found\\\\\\\\\\\\\\\",\\\\\\\\u000a \\\\\\\\\\\\\\\"content\\\\\\\\\\\\\\\": templates.render('404.html', req, {})\\\\\\\\u000a };\\\\\\\\u000a};\\\\\\\",\\\\\\\"types\\\\\\\":\\\\\\\"/**\\\\\\\\u000a * \\\\\\\\u000a */\\\\\\\",\\\\\\\"updates\\\\\\\":\\\\\\\"/**\\\\\\\\u000a * \\\\\\\\u000a */\\\\\\\",\\\\\\\"validate\\\\\\\":\\\\\\\"//------------------------------------------------------------------------------\\\\\\\\u000a// Init\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000avar types = require('kanso/types'),\\\\\\\\u000a app_types = require('./types');\\\\\\\\u000a\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000a// Validate\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000a/**\\\\\\\\u000aValidates document to be created/updated.\\\\\\\\u000a\\\\\\\\u000aValidation\\\\\\\\u000a----------\\\\\\\\u000a- One per design document\\\\\\\\u000a- If multiple validation functions exist for a database, all of them will be run. If one throws error the create/update is blocked.\\\\\\\\u000a\\\\\\\\u000aFunctions used inside the validate function\\\\\\\\u000a-------------------------------------------\\\\\\\\u000a- throw({unauthorized: message}) // Throws an unauthorized error and blocks the update.\\\\\\\\u000a- throw({forbidden: message}) // Throws a forbidden error and blocks the update.\\\\\\\\u000a\\\\\\\\u000a\\\\\\\\u000a@param {Object} newDoc Document from the client.\\\\\\\\u000a@param {Object} oldDoc Existing document in the database.\\\\\\\\u000a@param {Object} userCtx User information.\\\\\\\\u000a**/\\\\\\\\u000amodule.exports = function(newDoc, oldDoc, userCtx) {\\\\\\\\u000a types.validate_doc_update(app_types, newDoc, oldDoc, userCtx);\\\\\\\\u000a};\\\\\\\"}\\\"]\"]"} When I add a comment in it the error disappears. was: When the file I require() is empty CouchDB throws an error. Must be a bug. > require() an empty file will throw error > ---------------------------------------- > > Key: COUCHDB-1223 > URL: https://issues.apache.org/jira/browse/COUCHDB-1223 > Project: CouchDB > Issue Type: Bug > Reporter: Johnny Weng Luu > > When the file I require() is empty CouchDB throws an error. > {"error":"compilation_error","reason":"Module require('kanso/core') raised > error [\"error\", \"compilation_error\", \"Module require('lib/app') raised > error [\\\"error\\\", \\\"invalid_require_path\\\", \\\"Object has no > property \\\\\\\"views\\\\\\\". > {\\\\\\\"views\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"app\\\\\\\":\\\\\\\"/**\\\\\\\\u000a > * Values exported from this module will automatically be used to > generate\\\\\\\\u000a * the design doc pushed to CouchDB.\\\\\\\\u000a > */\\\\\\\\u000a\\\\\\\\u000amodule.exports = {\\\\\\\\u000a types: > require('./types'),\\\\\\\\u000a shows: require('./shows'),\\\\\\\\u000a > lists: require('./lists'),\\\\\\\\u000a views: > require('./views'),\\\\\\\\u000a updates: > require('./updates'),\\\\\\\\u000a filters: > require('./filters'),\\\\\\\\u000a rewrites: > require('./rewrites'),\\\\\\\\u000a validate_doc_update: > require('./validate'),\\\\\\\\u000a events: > require('./events')\\\\\\\\u000a};\\\\\\\\u000a\\\\\\\",\\\\\\\"events\\\\\\\":\\\\\\\"/**\\\\\\\\u000a > * Bindings to Kanso events\\\\\\\\u000a */\\\\\\\\u000a\\\\\\\\u000avar > events = > require('kanso/events');\\\\\\\\u000a\\\\\\\\u000a\\\\\\\\u000a/**\\\\\\\\u000a > * The init method fires when the app is initially loaded from a page > rendered\\\\\\\\u000a * by CouchDB.\\\\\\\\u000a > */\\\\\\\\u000a\\\\\\\\u000a/**\\\\\\\\u000a * events.on('init', function () > {\\\\\\\\u000a * // app initialization code goes here...\\\\\\\\u000a * > });\\\\\\\\u000a */\\\\\\\\u000a\\\\\\\\u000a\\\\\\\\u000a/**\\\\\\\\u000a * > The sessionChange event fires when the app is first loaded and the > user's\\\\\\\\u000a * session information becomes available. It is also fired > whenever a change\\\\\\\\u000a * to the user's session is detected, for > example after logging in or out.\\\\\\\\u000a > */\\\\\\\\u000a\\\\\\\\u000a/**\\\\\\\\u000a * events.on('sessionChange', > function (userCtx, req) {\\\\\\\\u000a * // session change handling code > goes here...\\\\\\\\u000a * });\\\\\\\\u000a > */\\\\\\\\u000a\\\\\\\\u000a\\\\\\\\u000a/**\\\\\\\\u000a * The updateFailure > event fires when an update function returns a document as\\\\\\\\u000a * the > first part of an array, but the client-side request to update > the\\\\\\\\u000a * document fails.\\\\\\\\u000a > */\\\\\\\\u000a\\\\\\\\u000aevents.on('updateFailure', function (err, info, > req, res, doc) {\\\\\\\\u000a alert(err.message || > err.toString());\\\\\\\\u000a});\\\\\\\\u000a\\\\\\\",\\\\\\\"filters\\\\\\\":\\\\\\\"/**\\\\\\\\u000a > * \\\\\\\\u000a */\\\\\\\",\\\\\\\"lists\\\\\\\":\\\\\\\"/**\\\\\\\\u000a * > Lists\\\\\\\\u000a > */\\\\\\\",\\\\\\\"rewrites\\\\\\\":\\\\\\\"//------------------------------------------------------------------------------\\\\\\\\u000a// > > Init\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000a// > > Rewrites\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000amodule.exports > = [{\\\\\\\\u000a \\\\\\\\\\\\\\\"method\\\\\\\\\\\\\\\": > \\\\\\\\\\\\\\\"GET\\\\\\\\\\\\\\\",\\\\\\\\u000a > \\\\\\\\\\\\\\\"from\\\\\\\\\\\\\\\": > \\\\\\\\\\\\\\\"/tests\\\\\\\\\\\\\\\",\\\\\\\\u000a > \\\\\\\\\\\\\\\"to\\\\\\\\\\\\\\\": > \\\\\\\\\\\\\\\"_show/tests\\\\\\\\\\\\\\\"\\\\\\\\u000a}, {\\\\\\\\u000a > \\\\\\\\\\\\\\\"method\\\\\\\\\\\\\\\": > \\\\\\\\\\\\\\\"*\\\\\\\\\\\\\\\",\\\\\\\\u000a > \\\\\\\\\\\\\\\"from\\\\\\\\\\\\\\\": > \\\\\\\\\\\\\\\"*\\\\\\\\\\\\\\\",\\\\\\\\u000a > \\\\\\\\\\\\\\\"to\\\\\\\\\\\\\\\": > \\\\\\\\\\\\\\\"../../../*\\\\\\\\\\\\\\\"\\\\\\\\u000a}];\\\\\\\",\\\\\\\"shows\\\\\\\":\\\\\\\"//------------------------------------------------------------------------------\\\\\\\\u000a// > > Init\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000avar > templates = > require('kanso/templates');\\\\\\\\u000a\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000a// > > Shows\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000aexports.tests > = function(doc, req) {\\\\\\\\u000a\\\\\\\\u000a var scripts = > templates.render('tests.html', req, {});\\\\\\\\u000a \\\\\\\\u000a var > body = templates.render('base.html', req, {\\\\\\\\u000a > \\\\\\\\\\\\\\\"title\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"Jasmine Spec > Runner\\\\\\\\\\\\\\\",\\\\\\\\u000a > \\\\\\\\\\\\\\\"scripts\\\\\\\\\\\\\\\": scripts,\\\\\\\\u000a > \\\\\\\\\\\\\\\"content\\\\\\\\\\\\\\\": > \\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\u000a });\\\\\\\\u000a\\\\\\\\u000a > return {\\\\\\\\u000a \\\\\\\\\\\\\\\"headers\\\\\\\\\\\\\\\": > {\\\\\\\\u000a \\\\\\\\\\\\\\\"Content-Type\\\\\\\\\\\\\\\": > \\\\\\\\\\\\\\\"text/html\\\\\\\\\\\\\\\"\\\\\\\\u000a },\\\\\\\\u000a > \\\\\\\\\\\\\\\"body\\\\\\\\\\\\\\\": body\\\\\\\\u000a > };\\\\\\\\u000a\\\\\\\\u000a};\\\\\\\\u000a\\\\\\\\u000aexports.not_found = > function(doc, req) {\\\\\\\\u000a return {\\\\\\\\u000a > \\\\\\\\\\\\\\\"title\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"404 - Not > Found\\\\\\\\\\\\\\\",\\\\\\\\u000a > \\\\\\\\\\\\\\\"content\\\\\\\\\\\\\\\": templates.render('404.html', req, > {})\\\\\\\\u000a > };\\\\\\\\u000a};\\\\\\\",\\\\\\\"types\\\\\\\":\\\\\\\"/**\\\\\\\\u000a * > \\\\\\\\u000a */\\\\\\\",\\\\\\\"updates\\\\\\\":\\\\\\\"/**\\\\\\\\u000a * > \\\\\\\\u000a > */\\\\\\\",\\\\\\\"validate\\\\\\\":\\\\\\\"//------------------------------------------------------------------------------\\\\\\\\u000a// > > Init\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000avar > types = require('kanso/types'),\\\\\\\\u000a app_types = > require('./types');\\\\\\\\u000a\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000a// > > Validate\\\\\\\\u000a//------------------------------------------------------------------------------\\\\\\\\u000a/**\\\\\\\\u000aValidates > document to be > created/updated.\\\\\\\\u000a\\\\\\\\u000aValidation\\\\\\\\u000a----------\\\\\\\\u000a- > One per design document\\\\\\\\u000a- If multiple validation functions exist > for a database, all of them will be run. If one throws error the > create/update is blocked.\\\\\\\\u000a\\\\\\\\u000aFunctions used inside the > validate > function\\\\\\\\u000a-------------------------------------------\\\\\\\\u000a- > throw({unauthorized: message}) // Throws an unauthorized error and blocks > the update.\\\\\\\\u000a- throw({forbidden: message}) // Throws a forbidden > error and blocks the update.\\\\\\\\u000a\\\\\\\\u000a\\\\\\\\u000a@param > {Object} newDoc Document from the client.\\\\\\\\u000a@param {Object} oldDoc > Existing document in the database.\\\\\\\\u000a@param {Object} userCtx User > information.\\\\\\\\u000a**/\\\\\\\\u000amodule.exports = function(newDoc, > oldDoc, userCtx) {\\\\\\\\u000a types.validate_doc_update(app_types, newDoc, > oldDoc, userCtx);\\\\\\\\u000a};\\\\\\\"}\\\"]\"]"} > When I add a comment in it the error disappears. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira