> Now why would it go and do something like that?

Your call to the non-existent function is synchronous w.r.t. Express's
request handling chain. This same issue came up here a couple of weeks ago.
See:

https://groups.google.com/forum/#!msg/nodejs/ZfaJPYyHKoA/BgHxErk9bEUJ

If you wrapped your two statements in process.nextTick() / setImmediate(),
you'd be fine.

--
Martin Cooper


On Fri, Jul 19, 2013 at 6:52 AM, Lee <[email protected]> wrote:

> *Copied from
> http://stackoverflow.com/questions/17729900/node-js-domain-per-express-request-inside-another-domain
> *
>
> I'm trying to layout a basic Node app like this...
>
> Cluster -> Worker -> Server Domain -> Express Request Domain
>
> So, if an error is thrown 18 layers deep into a call stack because someone
> misspelled their name on a login form, the entire server doesn't crash.
>
> Here's some basic code to simulate the worker part:
>
> var domain, server;
>> domain = require('domain');
>> server = domain.create();
>> server.on('error', function(e) {
>>     console.log('total meltdown...', e.stack);
>> });
>> server.run(function() {
>>     var express = require('express')();
>>     express.configure(function() {
>>         // Domain on EVERY request
>>         express.use(function(req, res, next) {
>>             var d = domain.create();
>>             d.on('error', function(e) {
>>                 console.log('fired REQUEST error', e.stack);
>>                 next(e);
>>             });
>>             d.run(next);
>>         });
>>         // Generic error handler
>>         express.use(function(e, req, res, next) {
>>             res.status(500);
>>             res.end('oops');
>>         });
>>         // Serve the request with a blatent error
>>         express.get('/', function(req, res) {
>>             this_function_does_not_exist();
>>             res.end('we will never get here');
>>         });
>>     });
>>     // Fire 'er up
>>     express.listen(3000);
>> });
>
>
> What I'm expecting...
>
> I curl http://localhost:3000/, get a nice little 'oops' error, and see
> 'fired REQUEST error' and the error stack in the console.
>
> What actually happens...
>
> I get this both as the browser response, and in the console...
>
> ReferenceError: this_function_does_not_exist is not defined at
>> /Stuff/test.js:38:13 at callbacks
>> (/Stuff/node_modules/express/lib/router/index.js:161:37) at param
>> (/Stuff/node_modules/express/lib/router/index.js:135:11) at pass
>> (/Stuff/node_modules/express/lib/router/index.js:142:5) at Router._dispatch
>> (/Stuff/node_modules/express/lib/router/index.js:170:5) at Object.router
>> (/Stuff/node_modules/express/lib/router/index.js:33:10) at next
>> (/Stuff/node_modules/express/node_modules/connect/lib/proto.js:190:15) at
>> next (/Stuff/node_modules/express/node_modules/connect/lib/proto.js:192:9)
>> at b (domain.js:183:18) at Domain.run (domain.js:123:23)
>
>
> Now why would it go and do something like that?
>
>  --
> --
> Job Board: http://jobs.nodejs.org/
> Posting guidelines:
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> You received this message because you are subscribed to the Google
> Groups "nodejs" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/nodejs?hl=en?hl=en
>
> ---
> You received this message because you are subscribed to the Google Groups
> "nodejs" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to