vue.js git-bash:SyntaxError:缺少)参数列表后

9cbw7uwe  于 2023-05-01  发布在  Vue.js
关注(0)|答案(6)|浏览(179)

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

https://medium.com/@justin.ramel/nuxt-js-debugging-in-visual-studio-code-822ff9d51c77

我已经做到了:

$ 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文件是:

#!/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

编辑:
我试着做了一些改变,得到了:

> 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.

我怎么才能让它工作?

fafcakar

fafcakar1#

我有一个部分的解释和修复,应该为一些人工作。

起因

问题的根本原因是node获得了Bash或Windows shell脚本作为参数。如果您查看.bin中的文件(如node_modules\.bin\nuxt),您将意识到这些实际上是shell脚本,它们应该返回JavaScript文件的真实路径,该文件应该作为参数传递给node
我不知道这在Linux下是如何工作的,但我在使用git-bash时遇到过这个问题,而在Linux虚拟机上使用相同的代码库工作得很好,所以它肯定是特定于环境的。如果有人有这个问题的答案,我很乐意把它添加到问题中。

解决方案

不要将.bin中的文件传递给node。而是找到真实的文件的路径并传递它。在本例中,它是node_modules/nuxt/bin/nuxt.js,许多库都遵循相同的原则,但有时要找到它可能有点棘手,例如Angular在我的系统中就在node_modules/@angular/cli/bin/ng中。

注意事项

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

2nbm6dog

2nbm6dog2#

在我的例子中,我在包中使用了错误的路径。json:
当我这样做的时候,它不起作用:

"scripts": {
  ...
  "dev-debug": "node --inspect node_modules/.bind/nuxt,
  ...
}

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

"dev-debug": "node --inspect node_modules/nuxt/bin/nuxt.js",
mgdq6dx1

mgdq6dx13#

像这样工作

"dev-debug": "node --inspect node_modules/nuxt/bin/nuxt.js",

我使用这种方法的原因是因为Nuxt的#8730问题。VsCode本机调试器(在Nuxt服务器端/静态生成器上)未使用源Map||Universal App)。
如果您的Nuxt应用程序是SPA,没有问题。

oxosxuxt

oxosxuxt4#

我使用的是包中的以下配置。json文件

"scripts": {
  "test": "node --inspect node_modules/.bin/cross-env API_HOST=url ember serve",
}

上面的配置适用于Linux机器。但是我有一台windows机器,在npm运行测试期间,我得到了这个错误。
在我的情况下,当我删除节点--检查比它为我工作。

"test": "node_modules/.bin/cross-env API_HOST=url ember serve",
e1xvtsh3

e1xvtsh35#

我不确定这是否是问题所在,但还是试试这个。就像我过去在使用遗留反引号时遇到过一些奇怪的错误****。 使用$(...)表示法而不是传统的反勾**。..`**

#!/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
wljmcqd8

wljmcqd86#

我在修复时也遇到了这个问题,这样我们的react项目就可以运行两个不同的tsconfig文件。请注意,“Original”在本地工作,但在我们的azure管道中失败了。“Fix”和“Original”都在本地和我们的管道中工作。
错误:

> client-app@0.1.0 automation
> ts-node --project src/tests/tsconfig.commonjs.json ./node_modules/.bin/cucumber-js src/tests/features/**/*.feature --require-module ts-node/register --require src/tests/test.setup.ts --require src/tests/step-definitions/**/*.spec.ts

D:\a\1\s\client-app\node_modules\.bin\cucumber-js:2
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
          ^^^^^^^

SyntaxError: missing ) after argument list
    at internalCompileFunction (node:internal/vm:73:18)
    at wrapSafe (node:internal/modules/cjs/loader:1176:20)
    at Module._compile (node:internal/modules/cjs/loader:1218:27)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
    at Object.require.extensions.<computed> [as .js] (D:\a\1\s\client-app\node_modules\ts-node\src\index.ts:1608:43)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Function.Module._load (node:internal/modules/cjs/loader:958:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at phase4 (D:\a\1\s\client-app\node_modules\ts-node\src\bin.ts:649:14)
    at bootstrap (D:\a\1\s\client-app\node_modules\ts-node\src\bin.ts:95:10)
##[error]Cmd.exe exited with code '1'.

原始节点脚本(npm运行自动化):

"automation": "ts-node --project src/tests/tsconfig.commonjs.json ./node_modules/.bin/cucumber-js src/tests/features/**/*.feature --require-module ts-node/register --require src/tests/test.setup.ts --require src/tests/step-definitions/**/*.spec.ts",

修复:

"automation": "ts-node --project src/tests/tsconfig.commonjs.json ./node_modules/@cucumber/cucumber/bin/cucumber.js src/tests/features/**/*.feature --require-module ts-node/register --require src/tests/test.setup.ts --require src/tests/step-definitions/**/*.spec.ts",

就像其他人提到的。这是一个设置正确的路径到包文件的问题。 cucumber 是我的问题。

相关问题