REPL server.start fail #55

Closed
CrabBot opened this Issue Aug 15, 2012 · 7 comments

Comments

Projects
None yet
4 participants

CrabBot commented Aug 15, 2012

hookio = require('hook.io');
require('repl').start({})
new hookio.Hook

results in the following error:

$ node foo.js 
> 
TypeError: undefined is not a function
    at Object.stores.create (/Users/crabdude/github/node_modules/hook.io/node_modules/nconf/lib/nconf/stores.js:35:10)
    at Provider.use (/Users/crabdude/github/node_modules/hook.io/node_modules/nconf/lib/nconf/provider.js:45:25)
    at Object.<anonymous> (/Users/crabdude/github/node_modules/hook.io/node_modules/nconf/lib/nconf.js:17:7)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (/Users/crabdude/github/node_modules/hook.io/node_modules/nconf/lib/nconf/stores/memory.js:8:13)

And it looks like it may be due to this weirdness, though I haven't checked:

nconf.__defineGetter__(name, function () {
    return require('./nconf/stores/' + store)[name];
  });
Contributor

Marak commented Aug 15, 2012

What are you trying to do? The code you posted doesn't make sense. With the default settings, a hook will already be listening for STDIN from the terminal. hook.io also comes with a built-in repl ( --repl ).

If you really need to use a vanilla repl, you'll have to change some of hook.io's default configuration settings.

Unsure about any issues with nconf here, could be a red herring + unvalidated user input problem in nconf.

CrabBot commented Aug 15, 2012

The code is the minimum to reproduce.

We have a process that that's communicating via hook.io and is additionally using the REPL for debugging. The hook.io binding is a couple layers deep, and the REPL context binding is at the top level, so even if there were hooks, it doesn't really make sense in this case. The error still occurs with STDIN ignored, FWIW.

Contributor

Marak commented Aug 15, 2012

When I run the code you posted,

hookio = require('hook.io');
require('repl').start({})
new hookio.Hook

I get

^CMarak-Squiress-MacBook-Pro-2:hook.io maraksquires$ node test.js 

readline.js:121
    var lines = prompt.split(/[\r\n]/);
                       ^
TypeError: Object #<Object> has no method 'split'
    at Interface.setPrompt (readline.js:121:24)
    at new REPLServer (repl.js:128:7)
    at Object.start (repl.js:251:14)
    at Object.<anonymous> (/Users/maraksquires/dev/hook.io/test.js:2:17)
    at Module._compile (module.js:446:26)
    at Object..js (module.js:464:10)
    at Module.load (module.js:353:31)
    at Function._load (module.js:311:12)
    at Array.0 (module.js:484:10)
    at EventEmitter._tickCallback (node.js:190:38)
Marak-Squiress-MacBook-Pro-2:hook.io maraksquires$ 

I can't read your mind. The code you posted shows starting a node repl and then creating a hook with default settings. Anything else I can't comment on.

CrabBot commented Aug 15, 2012

I already explained how it's being used, and provided a minimum code to reproduce. I'm not sure why your code is returning a different error, but I've confirmed the same error on multiple boxes with multiple people with fresh npm installs of hook.io and fresh checkouts. (0.8.10)

Honestly, this bug is completely avoidable by starting the REPL after the hook, so I'm happy to provide more info if you can provide something specific that you need in this non-minimum reproducible example.

Contributor

Marak commented Aug 15, 2012

I switched to node 0.8.x and am now seeing the same error.

Looks like bad input being passed into nconf from hook.io and causing nconf to crash.

Should be fixed in nconf so that it won't crash / will throw a meaningful message.

Should be fixed in hook.io so that the bad input ( probably invalid config location / options ) are never passed in.

Contributor

bmeck commented Sep 7, 2012

Marak can you test now that we will be returning the root of configs when given null or undefined as the key

Owner

indexzero commented Dec 23, 2012

This is unrelated to nconf

@indexzero indexzero closed this Dec 23, 2012

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment