Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Node always fatal errors #14

Closed
lukechilds opened this issue Jan 11, 2018 · 17 comments
Closed

Node always fatal errors #14

lukechilds opened this issue Jan 11, 2018 · 17 comments
Labels

Comments

@lukechilds
Copy link

Trying one of the examples I just get:

svg-term --cast=113643 --out examples/parrot.svg                   
/Users/lukechilds/.config/yarn/global/node_modules/svg-term-cli/lib/cli.js:355
            throw err;
            ^

TypeError: Cannot use 'in' operator to search for 'black' in undefined
    at REQUIRED_COLORS.filter.key (/Users/lukechilds/.config/yarn/global/node_modules/term-schemes/lib/parsers/hyper.js:122:30)
    at Array.filter (<anonymous>)
    at getHyperConfigErrors (/Users/lukechilds/.config/yarn/global/node_modules/term-schemes/lib/parsers/hyper.js:122:10)
    at Object.hyper (/Users/lukechilds/.config/yarn/global/node_modules/term-schemes/lib/parsers/hyper.js:23:22)
    at extractTheme (/Users/lukechilds/.config/yarn/global/node_modules/svg-term-cli/lib/cli.js:292:24)
    at getTheme (/Users/lukechilds/.config/yarn/global/node_modules/svg-term-cli/lib/cli.js:277:11)
    at /Users/lukechilds/.config/yarn/global/node_modules/svg-term-cli/lib/cli.js:147:23
    at Generator.next (<anonymous>)
    at fulfilled (/Users/lukechilds/.config/yarn/global/node_modules/svg-term-cli/lib/cli.js:5:58)
    at <anonymous>

I've tested on 2.0.4, 2.0.3 and 2.1.0-1. All give me the same error.

@marionebl
Copy link
Owner

marionebl commented Jan 11, 2018

Thanks for the report @lukechilds. Looks like an issue that is caused by term-schemes not being able to read the theme from ~/.hyper.js.

Could you share the theme-related parts of your config?

@marionebl marionebl added the bug label Jan 11, 2018
@marionebl
Copy link
Owner

This kind of thing could be prevented by defaulting to builtin themes via #9

@lukechilds
Copy link
Author

Thanks for the fast response!

Yeah sure:

// Future versions of Hyper may add additional config options,
// which will not automatically be merged into this file.
// See https://hyper.is#cfg for all currently supported options.

module.exports = {
	config: {
		shell: '/usr/local/bin/zsh',
		fontSize: 12,
		fontFamily: 'Menlo',
		cursorBlink: true,
		cursorColor: '#8AB3B5',
		hyperlinks: {
			clickAction: 'ignore'
		},
		base16: {
			scheme: 'mocha'
		}
	},
	plugins: [
		'hyperlinks-iterm',
		'hyper-search',
		'hypersixteen'
	],
};

@lukechilds
Copy link
Author

Reverting the config to:

// Future versions of Hyper may add additional config options,
// which will not automatically be merged into this file.
// See https://hyper.is#cfg for all currently supported options.

module.exports = {
	config: {
		shell: '/usr/local/bin/zsh',
		fontSize: 12,
		fontFamily: 'Menlo',
		cursorBlink: true,
		cursorColor: '#8AB3B5',
	}
};

doesn't solve the issue if that's any help

@lukechilds
Copy link
Author

oh, I totally forgot to mention, also tried on Terminal.app:

svg-term --cast=113643 --out examples/parrot.svg
/Users/lukechilds/.nvm/versions/node/v9.3.0/lib/node_modules/svg-term-cli/lib/cli.js:355
            throw err;
            ^

TypeError: Missing ANSIBlackColor
    at toRGB (/Users/lukechilds/.nvm/versions/node/v9.3.0/lib/node_modules/svg-term-cli/node_modules/term-schemes/lib/parsers/terminal.js:45:15)
    at terminal (/Users/lukechilds/.nvm/versions/node/v9.3.0/lib/node_modules/svg-term-cli/node_modules/term-schemes/lib/parsers/terminal.js:19:12)
    at extractTheme (/Users/lukechilds/.nvm/versions/node/v9.3.0/lib/node_modules/svg-term-cli/lib/cli.js:310:20)
    at getTheme (/Users/lukechilds/.nvm/versions/node/v9.3.0/lib/node_modules/svg-term-cli/lib/cli.js:277:11)
    at /Users/lukechilds/.nvm/versions/node/v9.3.0/lib/node_modules/svg-term-cli/lib/cli.js:147:23
    at Generator.next (<anonymous>)
    at fulfilled (/Users/lukechilds/.nvm/versions/node/v9.3.0/lib/node_modules/svg-term-cli/lib/cli.js:5:58)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:160:7)

@marionebl
Copy link
Owner

@lukechilds: Thanks for reporting, I'll definitely will have to invest some time into the hyper theme parser. Any chance you can share the color profile Terminal.app is configured to use?

@lukechilds
Copy link
Author

Terminal.app is completely standard.

I don't think it's to do with hyper, both terminals are giving a very similar error on the same line.

svg-term-cli/lib/cli.js:355

Hyper says TypeError: Cannot use 'in' operator to search for 'black' in undefined
While Terminal.app says TypeError: Missing ANSIBlackColor

So something to do with the color black, independent of terminal types 🤔

@marionebl
Copy link
Owner

Ok, took quite a dive into this and there were a number of problems that caused your issues

  1. Hyper: Cannot use 'in' operator to search for 'black' in undefined

term-schemes assumed .config.colors always to be an object. It now ensures there is no TypeError thrown if this assumption is broken. Fixing this surfaced the next issue.

  1. Hyper: Resolve plugins

plugins[] were not handled, so hypersixteen would have no effect at all. term-schemes.hyper now contains a minimal implementation of the Hyper plugin mechanism. This yields the expeceted config

  1. Hyper: Fall back to defaults

term-schemes tends to be very strict about accepted input. This meant enforcing all required colors to be defined explicitly. Hyper in contrast uses default settings and "just works". I adapted the term-schemes.hyper parser to default to the known defaults of Hyper

  1. Terminal: Fall back to defaults

Basically the same story as with Hyper defaults.

  1. Terminal: Support more NSColorSpaces

term-schemes.terminal now handles all NSColorSpaces variants found in the default Terminal.app profiles.

@marionebl
Copy link
Owner

marionebl commented Jan 11, 2018

# in any terminal
svg-term --cast 113643 --term=terminal --profile="Basic" --window

# in any terminal, with hypersixteen configured to mocha
svg-term --cast 113643 --term=hyper --window

# in any terminal, with default config in hyper.js
svg-term --cast 113643 --term=hyper --no-cursor --window

@marionebl
Copy link
Owner

Closing this for now, let's open focused issues if something of this type crops up again and reference this issue

@lukechilds
Copy link
Author

lukechilds commented Jan 12, 2018

Thanks so much for looking into this.

How did you achieve number 2? That's exactly what I'm looking for!

I tried:

$ svg-term --cast 113643 --term hyper --profile ~/.hyper.js --window

  Share terminal sessions as razor-sharp animated SVG everywhere

  Usage
    $ svg-term [options]

  Options
    --at            timestamp of frame to render in ms [number]
    --cast          asciinema cast id to download [string], required if no stdin provided [string]
    --from          lower range of timeline to render in ms [number]
    --height        height in lines [number]
    --help          print this help [boolean]
    --in            json file to use as input [string]
    --no-cursor     disable cursor rendering [boolean]
    --no-optimize   disable svgo optimization [boolean]
    --out           output file, emits to stdout if omitted, [string]
    --padding       distance between text and image bounds, [number]
    --padding-x     distance between text and image bounds on x axis [number]
    --padding-y     distance between text and image bounds on y axis [number]
    --profile       terminal profile file to use, requires --term [string]
    --term          terminal profile format [iterm2, xrdb, xresources, terminator, konsole, terminal, remmina, termite, tilda, xcfe], requires --profile [string]
    --to            upper range of timeline to render in ms [number]
    --width         width in columns [number]
    --window        render with window decorations [boolean]

  Examples
    $ cat rec.json | svg-term
    $ svg-term --cast 113643
    $ svg-term --cast 113643 --out examples/parrot.svg

 svg-term: term expected to be one of hyper, iterm2, konsole, remmina, terminal, terminator, termite, tilda, xcfe, xresources, xterm, received "hyper"

@lukechilds
Copy link
Author

Essentially trying to end up with something like this: https://i.imgur.com/DSeOCee.gif

But not a 15mb GIF!

I have it on asciinema https://asciinema.org/a/RjJDZRRUESBCnPko2Qh1jd6CS

Apologies if it's something dumb in my setup but I'm wracking my brains trying to get this to work.

Also I only recently setup a new Mac so I don't have a particularly strange setup.

@marionebl
Copy link
Owner

Are you sure you use the latest svg-term version?

$ svg-term --version
2.0.5

@lukechilds
Copy link
Author

lukechilds commented Jan 12, 2018

Sorry, didn't realised you published a new version since opening this issue.

Hmmn, now I'm getting:

$ svg-term --cast=113643 --out examples/parrot.svg
/Users/lukechilds/.config/yarn/global/node_modules/svg-term-cli/lib/cli.js:356
            throw err;
            ^

Error: Cannot find module 'electron'
    at Function.Module._resolveFilename (module.js:555:15)
    at Function.Module._load (module.js:482:25)
    at Module.require (module.js:604:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/lukechilds/.hyper_plugins/node_modules/hyperlinks-iterm/index.js:1:81)
    at Module._compile (module.js:660:30)
    at Object.Module._extensions..js (module.js:671:10)
    at Module.load (module.js:573:32)
    at tryModuleLoad (module.js:513:12)
    at Function.Module._load (module.js:505:3)

@marionebl
Copy link
Owner

Okay, thats the plugin resolver in term-schemes acting up - could you disable all plugins except hypersixteen?

@lukechilds
Copy link
Author

That did the trick, thanks so much for your help!

@marionebl
Copy link
Owner

Thank you for raising all those issues, this helps me improving the tool a lot :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants