Giter Site home page Giter Site logo

Syntax error on Windows about cmd-shim HOT 15 CLOSED

kgryte avatar kgryte commented on June 12, 2024
Syntax error on Windows

from cmd-shim.

Comments (15)

khelmar avatar khelmar commented on June 12, 2024 4

I'm seeing the same issue when trying to run sass-lint so I don't think it's istanbul specific

from cmd-shim.

pallxk avatar pallxk commented on June 12, 2024 1

Out of curiosity, I made some investigation on this.

In fact, SyntaxError: missing ) after argument list is reported by node.js and is not reported by shell. So this does not necessarily mean something goes wrong with the shim shell script.

With some reading of the code of istanbul and testing, I think this is caused by running the shim shell script via node. That is, in your particular case, node /c/projects/foo/node_modules/.bin/tape was run under the hood, where ./bin/tap is the shim shell script rather than the actual node.js script. You may check this with --verbose added to your istanbul cover command.

See istanbul/run-with-cover.js#L117 for related code.

So even if this is not istanbul specific, I thinks it's not caused by #4, and not related to #16.

(I'm new to node.js and not using istanbul, so chances are I missed or misunderstood something. Please tell me if i'm wrong.)

from cmd-shim.

copenhas avatar copenhas commented on June 12, 2024 1

I have not had a chance to look into again. I'm afraid I got caught up with work long enough to forget about this issue. I apologize.

I did test out our internal git extensions (written in node and the reason I submitted #4 ), and they work on latest node.js. After reading @pallxk comment (thanks for looking into it), I looked at the Istanbul documentation here. It looks like the command is expecting a node.js javascript file and not a shell command.

Perhaps instead of passing istanbul /c/projects/foo/node_modules/.bin/tape you could try figuring out what the main module is and pass it that. Based on tape's package.json it looks like it would be something like this: /c/projects/foo/node_modules/tape/main.js.

from cmd-shim.

 avatar commented on June 12, 2024 1

@copenhas Bingo!

This works for mocha on Windows:

./node_modules/.bin/istanbul cover ./node_modules/mocha/bin/_mocha

Thank you for your outstanding support and very quick response.

Best to you,

Karl

from cmd-shim.

copenhas avatar copenhas commented on June 12, 2024

Sorry for such a late response. I don't have a Windows setup at home. I got a basic setup going and tried something real quick.

Setup:

Windows 7
git for Windows 2.8.1
node 4.4.3
MinGW with MSYS installed (grabbed the installer from sourceforge)

I installed istanbul globally:

npm install -g istanbul

Then in git bash, cmd.exe, and MSYS bash this is what I got:

$ istanbul
Need a command to run
Try "istanbul help" for usage

Just to make sure the line in question was in the script I ran the following in git bash:

$ cat `which istanbul`
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")

case `uname` in
    *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac

if [ -x "$basedir/node" ]; then
  "$basedir/node"  "$basedir/node_modules/istanbul/lib/cli.js" "$@"
  ret=$?
else
  node  "$basedir/node_modules/istanbul/lib/cli.js" "$@"
  ret=$?
fi
exit $ret

Looks like this needs some more investigation to figure out why this is causing issues for you. I'll try to test some git extensions at work when I get a chance (it might take me a few days though). They were the reason originally #4 was opened.

from cmd-shim.

kgryte avatar kgryte commented on June 12, 2024

@copenhas Thanks for the response. Might be worth trying to run some of the istanbul commands (e.g., istanbul cover) to see if things work on your end. And would there be any difference in a local installation as opposed to installing globally? Also, not sure if this is an istanbul specific issue.

from cmd-shim.

kgryte avatar kgryte commented on June 12, 2024

@copenhas wanted to follow-up and see if you had any updates.

from cmd-shim.

 avatar commented on June 12, 2024

I've got the exact same issue, driving me crazy. The same exact code runs on my Mac w/o this error, but on Windows it just won't run.

Don't have any idea where to start looking.

from cmd-shim.

copenhas avatar copenhas commented on June 12, 2024

@kdawg1406 I believe the difference between macOS and Windows is that macOS supports she-bang scripts, while in Windows the commands have to be wrapped up into the cmd shim. So when you pass in ./node_modules/.bin/mocha on macOS the file probably contains JavaScript, but on Windows it contains shell commands.

Per the comments above you'll find that Istanbul is actually expecting a JavaScript file as the argument and not shell script or command. I believe that's what's causing the syntax error for you. You'll need to find out what the main module file path is so you can pass it in cross platform.

from cmd-shim.

copenhas avatar copenhas commented on June 12, 2024

Looks like Istanbul documents it some at README.md#usage-on-windows

from cmd-shim.

kgryte avatar kgryte commented on June 12, 2024

@copenhas Was able to resolve the issue using a solution similar to the solution described above. Thanks for the help. Closing the issue.

from cmd-shim.

ReinsBrain avatar ReinsBrain commented on June 12, 2024

@kdawg1406 - your solution doesn't work for me - when i use: ./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha
error is:

\node_modules\.bin\_mocha:2
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
          ^^^^^^^
SyntaxError: missing ) after argument list

when i use (as you suggest): ./node_modules/.bin/istanbul cover ./node_modules/bin/_mocha
error is: Unable to resolve file [./node_modules/bin/_mocha]

I don't understand how it can't resolve the file because i can see the file at ./node_modules/bin/_mocha]

from cmd-shim.

 avatar commented on June 12, 2024

@ReinsBrain Not sure, this was a long time ago, so much as changed in the toolchain. Sorry, I don't have an answer for you.

from cmd-shim.

mihaisavezi avatar mihaisavezi commented on June 12, 2024

This doesn't work for storybook. trying to debug via node --inspect node_modules/.bin/storybook-start -p 9001 throws the same error.

from cmd-shim.

Sawtaytoes avatar Sawtaytoes commented on June 12, 2024

@ReinsBrain You might need to change that line to npx _mocha.


Also, this error is happening even in the Webpack project. I get it when I run from a child process started with node.

Looks like something these libraries depend on is running this code in a way that Windows doesn't understand.

Whoever wrote the original code (cmd-shim?) has an incorrect assumption about the OS when commands are run from Node.js rather than from the OS's CLI.

from cmd-shim.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.