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

Issue/Feature request: unclear error when command of custom script not found (manually configured node version) #462

Closed
davidsneighbour opened this issue Nov 13, 2022 · 5 comments
Labels
bug Something isn't working Project: v8.2.0

Comments

@davidsneighbour
Copy link
Contributor

Describe the bug

Running a custom script with a configured command (node location) that does not exist results in an "undefined" error without much information. Looking at the output one can gleam that the node version does not exist, but not from the actual notification text.

To Reproduce

"frontMatter.custom.scripts": [
{
	"title": "Retrieve Unsplash image",
	"script": "./assets/config/frontmatter/scripts/retrieve-unsplash-header-image-info.js",
	"command": "~/.config/nvm/versions/node/v18.0.0/bin/node"
}
],

"~/.config/nvm/versions/node/v18.0.0/bin/node" does not exist.

shows:

Selection_003

The otuput console for frontmatter shows:

["INFO" - 18:11:19]  Receiving message from webview to panel: custom-script
["INFO" - 18:11:19]  Executing: ~/.config/nvm/versions/node/v18.0.0/bin/node /home/patrick/github.com/davidsneighbour/kollitsch.dev/assets/config/frontmatter/scripts/create-youtube-header-image.js "/home/patrick/github.com/davidsneighbour/kollitsch.dev" "/home/patrick/github.com/davidsneighbour/kollitsch.dev/content/blog/2022/music-to-program-to-8/index.md" '{"date":"2022-11-13T18:37:57+07:00","lastmod":"2022-11-13T18:44:15+07:00","title":"Music to program to","linkTitle":"PM8","tags":["programming-music","leenalchi","tok","100DaysToOffload"],"posttype":"music","resources":[{"src":"header.jpg","title":"Tiger is coming"}],"video":{"youtube":"LCZPF0eg9UA","artist":"leenalchi","title":"Tiger is coming"}}'
["ERROR" - 18:11:19]  Front Matter: Generate social image for Youtube: undefined
["INFO" - 18:11:19]  Front Matter: Generate social image for Youtube: Executed your custom script.

Running the script manually with the second line command results in:

bash: /home/patrick/.config/nvm/versions/node/v18.0.0/bin/node: No such file or directory

(due to some re-installing and moving around we are at v18.12.1 ;)

You could reproduce it using my repo at github.com/davidsneighbour/kollitsch.dev - run npm install, npm build and then open the workspace file open one of the "music to program to" posts in content/2022/. Click the custom script to retrieve the youtube image.

Latest Frontmatter (non-beta), latest VSCode.

Long story short, one of the following applies :)

  • feature: at some point Frontmatter should check, if the file in command and script exists and throw a readable error if not. I know computation time at program start is scarce (or when the configuration is reloaded), but that would be a good time to complain about this :)
  • bug: the custom script is tried, but fails. Frontmatter should show something readable instead of "undefined" (not sure how this works "behind the curtains")
@davidsneighbour davidsneighbour added the bug Something isn't working label Nov 13, 2022
@estruyf
Copy link
Owner

estruyf commented Nov 14, 2022

Thanks, I found the issue, and will be updated to the real command error it returns. Example:

image

@rshmhrj
Copy link

rshmhrj commented Nov 14, 2022

Running the sample script gives the same node not found error. Maybe its because it is running in a simple /bin/sh terminal which doesn't know anything about node:

/bin/sh: node: command not found

frontmatter.json

  "frontMatter.custom.scripts": [
    {
      "id": "sample",
      "title": "Sample",
      "script": "./scripts/sample.js",
      "command": "node"
    }
  ]

scripts/sample.js

const arguments = process.argv;

if (arguments && arguments.length > 0) {
  const workspaceArg = arguments[2]; // The workspace path
  const fileArg = arguments[3]; // The file path
  const frontMatterArg = arguments[4]; // Front matter data

  console.log(`NOTIFICATION SUCCESS?!`);
}

@estruyf
Copy link
Owner

estruyf commented Nov 14, 2022

@rshmhrj it depends on how your VS Code instance is configured. That is also why you can provide a path to your node executable.

@rshmhrj
Copy link

rshmhrj commented Nov 27, 2022

Hi @estruyf ,
Tested again by editing the command value and was successful:

image

When I run which node, the value is /usr/local/bin/node:

  "frontMatter.custom.scripts": [
    {
      "id": "sample",
      "title": "Sample",
      "script": "./scripts/sample.js",
      "command": "/usr/local/bin/node"
    }
  ]

@davidsneighbour maybe try a full path to the executable instead of ~/.config/nvm/versions/node/v18.0.0/bin/node use /home/patrick/.config/nvm/versions/node/v18.0.0/bin/node

@davidsneighbour
Copy link
Contributor Author

The path works in both ways. My issue was that the current version was NOT 18.0.0 but later, and the interface didn't indicate it. Seems to be more verbose in beta now and is working when configured properly.

@estruyf estruyf closed this as completed Dec 8, 2022
@estruyf estruyf mentioned this issue Dec 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working Project: v8.2.0
Projects
None yet
Development

No branches or pull requests

3 participants