首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git-bash: SyntaxError: missing )在参数列表之后

git-bash: SyntaxError: missing )在参数列表之后
EN

Stack Overflow用户
提问于 2019-01-04 02:59:36
回答 5查看 5.8K关注 0票数 7

我正在尝试使用vscode在nuxt项目上设置调试,使用:

代码语言:javascript
复制
https://medium.com/@justin.ramel/nuxt-js-debugging-in-visual-studio-code-822ff9d51c77

我已经做到了:

代码语言:javascript
复制
$ npm run dev-debug

> nuxt4@1.0.0 dev-debug E:\ENVS\js\nuxt4
> node --inspect node_modules/.bin/nuxt

Debugger listening on ws://127.0.0.1:9229/6f869cb6-7166-4182-b841-a528917d88fd
For help, see: https://nodejs.org/en/docs/inspector
E:\ENVS\js\nuxt4\node_modules\.bin\nuxt:2
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
        ^^^^^^^

SyntaxError: missing ) after argument list
    at new Script (vm.js:83:7)
    at createScript (vm.js:267:10)
    at Object.runInThisContext (vm.js:319:10)
    at Module._compile (internal/modules/cjs/loader.js:684:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:732:10)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
    at Function.Module._load (internal/modules/cjs/loader.js:552:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:774:12)
    at executeUserCode (internal/bootstrap/node.js:342:17)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! nuxt4@1.0.0 dev-debug: `node --inspect node_modules/.bin/nuxt`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the nuxt4@1.0.0 dev-debug script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

整个nuxt文件是:

代码语言:javascript
复制
#!/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/../nuxt/bin/nuxt.js" "$@"
ret=$?
else 
node  "$basedir/../nuxt/bin/nuxt.js" "$@"
ret=$?
fi
exit $ret

编辑:

我尝试进行更改,得到的结果是:

代码语言:javascript
复制
> node --inspect node_modules/.bin/nuxt

Debugger listening on ws://127.0.0.1:9229/458bafd6-1d8c-4a2b-8ec2-5ddc8b4f0fda
For help, see: https://nodejs.org/en/docs/inspector
E:\ENVS\js\nuxt4\node_modules\.bin\nuxt:1
(function (exports, require, module, __filename, __dirname) {   #!/bin/sh
                                                                ^

SyntaxError: Invalid or unexpected token
    at new Script (vm.js:83:7)
    at createScript (vm.js:267:10)
    at Object.runInThisContext (vm.js:319:10)
    at Module._compile (internal/modules/cjs/loader.js:684:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:732:10)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
    at Function.Module._load (internal/modules/cjs/loader.js:552:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:774:12)
    at executeUserCode (internal/bootstrap/node.js:342:17)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! nuxt4@1.0.0 dev-debug: `node --inspect node_modules/.bin/nuxt`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the nuxt4@1.0.0 dev-debug script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

我该如何让它工作呢?

EN

回答 5

Stack Overflow用户

发布于 2021-03-03 20:42:38

在我的例子中,我在package.json中使用了错误的路径:

当我这样做的时候,它不起作用:

代码语言:javascript
复制
"scripts": {
  ...
  "dev-debug": "node --inspect node_modules/.bind/nuxt,
  ...
}

然而,当我更改为正确的路径时,它确实起作用了:

代码语言:javascript
复制
"dev-debug": "node --inspect node_modules/nuxt/bin/nuxt.js",
票数 3
EN

Stack Overflow用户

发布于 2021-03-19 03:53:17

我有一个部分的解释和修复,应该对某些人有效。

原因

问题的根本原因是node获得了一个Bash或Windows shell脚本作为参数。如果您查看.bin中的文件,例如node_modules\.bin\nuxt,您将意识到这些实际上是外壳脚本,它们应该返回JavaScript文件的实际路径,该路径应该作为参数传递给node

我甚至不知道这是如何在Linux下工作的,但是当我在Linux虚拟机上使用相同的代码库使用git-bash时,我遇到过这个问题,所以它肯定是特定于环境的。如果任何人有这个问题的答案,我很乐意将其添加到问题中。

解决方案

请勿将.bin中的文件传递给node。相反,找到实际文件的路径并传递它。在本例中,它是node_modules/nuxt/bin/nuxt.js,许多库都遵循相同的原则,但有时它可能会有点难以找到,例如,在我的系统上,Angular位于node_modules/@angular/cli/bin/ng中。

一句忠告

此解决方案绕过了JavaScript文件的定位方式,并且在更新库之后可能会停止工作。或者,它可能不能在所有系统上工作。我不是node开发人员,只是在尝试运行别人的代码时才发现它。对于我的用例来说,这是一个足够好的解决方案,但可能对您不好。

票数 2
EN

Stack Overflow用户

发布于 2019-01-04 10:26:02

我不确定这是否是问题所在,但还是试试这个吧。就像我过去在使用传统的反引号.时遇到了一些奇怪的错误一样

使用$(...)表示法,而不是遗留的带反引号的...

代码语言:javascript
复制
#!/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/../nuxt/bin/nuxt.js" "$@"
ret=$?
else 
node  "$basedir/../nuxt/bin/nuxt.js" "$@"
ret=$?
fi
exit $ret
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54028280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档