santinic/how2

osx: TypeError: Cannot read property 'prototype' of undefined

tanrax opened this issue ยท 37 comments

how2 -l bash zip only jpg

/usr/local/lib/node_modules/how2/node_modules/devnull/transports/transport.js:59
Transport.prototype.__proto__ = EventEmitter.prototype;
                                            ^

TypeError: Cannot read property 'prototype' of undefined
    at Object.<anonymous> (/usr/local/lib/node_modules/how2/node_modules/devnull/transports/transport.js:59:45)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/usr/local/lib/node_modules/how2/node_modules/devnull/transports/stream.js:8:17)
    at Module._compile (module.js:571:32)

Node -v
v7.2.1

+1. Same problem here, got exactly the same output.
node --version 7.3.0

Same problem
Node -v
v7.3.0

+1 7.3.0 here as well

+2 7.3.0 here as well

Getting this on OSX 10.11.5

Node version v7.1.0

๐Ÿ˜ž

Same as above.

A module named "devnull" is fail to pass the CI test
image

image

Same problem with node version v7.4.0

Same problem with macOS Sierra 10.12.2 and node v7.4.0.

same problem with macOS Sierra 10.12.3 and node v7.4.0

Same problem here, with Manjaro Linux (Archlinux based distribution) and node v7.4.0.

This seems to be caused by devnull and the way it imports the EventEmitter here.

I recently updated Node.js, so I ended up having this issue. As a temporary workaround I forked both devnull and how2, fixed the issue and republished on NPM as devnull2 and how-2 and seems to work.

You can install it with

npm install -g how-2

and you should be able to use how2 command as before.

Probably not best practice, but it works meanwhile devnull gets updated

Still have this problem on node v7.4.0

Still an issue. Node v7.7.3.

npit commented

Still an issue, as above.

I've just dealt with this issue, actually we can solve it by ourself just in 1 minute (but it's just a workaround):

Open this file: /usr/local/lib/node_modules/how2/node_modules/devnull/transports/transport.js (this path depends on your OS and the way you used to install node.js) and replace:

var EventEmitter = process.EventEmitter;

by:

var EventEmitter = require('events');

That's it, no need to wait, enjoy the good part and forget the ugly part :)

image

@santinic Can I tip you some beer money to fix this?

@PaoloCifariello

hubstaff-account git:(feat-org-integration-P2*) $ how2 rails list migration status
bash - Solving "mv: Argument list too long"?

somehow its solving something else :) is there a repo I can log this into?

mre commented

Just a small addition to what @thenewvu said:
If you're using nvm on macOS, the path to the transport.js file is

${NVM_DIR}/versions/node/<YOUR_NODE_VERSION>/lib/node_modules/how2/node_modules/devnull/transports/transport.js

On my machine, ${NVM_DIR} exands to ~/.nvm.

Looks like devnull dev's may have forgotten about their project.
Their updated repo (mostly) fixes this problem, but they seem to have forgotten to run npm publish a year and a half ago.

Fixes above from @thenewvu and @mre are the way to go if you are just trying to use how2.
(Also, if you used yarn to install, the path is /Users/USERNAME/.config/yarn/global/node_modules/devnull/transports/transport.js)

@santinic if you want an easy temp fix devnull13 is basically just the original with the above fix. Might be a bad idea if the original dev's start working on it again, having to change dependencies again n all.

There's also the official StackExchange.DataExplorer to replace the current stackexchange module (what is requiring devnull, same dev, also apparently abandoned) but I imagine that would involve major changes to how how2 works and probably waaay to slow for a cli app. Dunno, didn't take much of a look at it, so might be worth a second look.

@dancyfits I don't think devnull is gonna be developed again (last commit is Nov 16, 2016).
Since it was used as a logger without any fancy stuff I decided to move from devnull to winston in my fork of how2.

@PaoloCifariello Good to know! I should've just looked for an alternative logger from the beginning

@PaoloCifariello Any reason for not making a pull request? Got some fancy additions planned? ๐Ÿ˜‰

@dancyfits I didn't open a PR because I think @santinic is not working at this repo anymore ๐Ÿ˜• (there are 10 really old open PR and many issues as well).

it hurts me to write this, but I found the solution:

npm rm how2
npm install -g how-2

the executable is still called how2.

This is a sad state of affairs...

an additional information regarding @dataf3l comments
it was node package referring to other repositories that forked this repositories which might be more updated than this one.
it works for me as well ๐Ÿ‘ for ya :)

This issue is now 16 months old and requires a 5 minute fix. @santinic maybe it's time to flag it as abandoned, put it up on some of the 'maintainers wanted' lists, or just plain hand the npm package over to the person that released how-2.

@PaoloCifariello Ma sei bravissimo! Can we get a Pull Request ?

mfw there's a reply from @santinic

image

Guys, the sun shines in Italy, I cannot spend my life fixing issues ๐Ÿ˜Ž
Anyone is willing to take control of the project ? @PaoloCifariello ?

Lol, sun shines for me too in Italy ๐Ÿ˜‚
I could take control of this, but because of a serious lack of time I will probably just check/review issues & PRs.

That would be enough already! I sent you a Collaborator request

Yeh, thank you @santinic, I accepted that, but still I can't push to NPM.
Shall we move from how2 to how-2 (which I created from my NPM profile) so that I can push new versions from this repository?

You should now be maintainer of how2 npm as well (just sent the invite). Do as you wish.

@PaoloCifariello, @santinic Thank you both, your efforts make the world a better place.
@PaoloCifariello can i haz upvote from the console?

Fixed in #85.