Skip to content
This repository

REPL server.start fail #55

Closed
CrabBot opened this Issue August 14, 2012 · 7 comments

4 participants

Adam Crabtree (CrabDude's alias) Charlie Robbins Bradley Meck
Adam Crabtree (CrabDude's alias)
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];
  });

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.

Adam Crabtree (CrabDude's alias)

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.

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.

Adam Crabtree (CrabDude's alias)

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.

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.

Bradley Meck
Owner

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

Charlie Robbins
Owner

This is unrelated to nconf

Charlie Robbins indexzero closed this December 23, 2012
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.