标记“&&”在此版本中不是有效的语句分隔符

IT技术 javascript reactjs powershell webpack
2021-03-25 03:36:16

我的 React 项目上安装Webpack的过程中,遇到以下问题阻碍了我的进度:

最后一步配置 Webpack

npm run build && node ./dist/main.js

Windows Power Shell / Visual Studio Code 上的错误

PS C:\Users\pythonbuddha\Desktop\to_experiment\to-do-list> npm run build && node ./dist/main.js
At line:1 char:15
+ npm run build && node ./dist/main.js
+               ~~
The token '&&' is not a valid statement separator in this version.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : InvalidEndOfLine

Promise配置 webpack 的教程

https://developerhandbook.com/webpack/webpack-4-from-absolute-scratch/

https://developerhandbook.com/webpack/how-to-configure-scss-modules-for-webpack/
5个回答

这是因为您在 PowerShell 中,请尝试在CMDGit Bash

或者(如果你想在 PS 中继续):

(npm run build) -and (node ./dist/main.js)

第三种选择,单独运行它们,

我认为提及-and替代方案有点误导,因为我怀疑人们通常会想要什么-and(我当然不想要那个,并且只有在我的命令运行时才意识到这一点)。答案应该只是提到要在 Powershell 中实现相同的功能,请使用 PowerShell 7+ 版。
2021-05-30 03:36:16
它适用于命令行问题,但创建了与 React 相关的问题。
2021-06-03 03:36:16
关于在 Windows PowerShell 中需要不同命令的好点子(虽然不再在 PowerShell (Core) 7+ 中),但重要的是要注意 PowerShell-and-or操作符不是&&and 的替代品||- 它们的功能根本不同,有效地丢弃了 stdout 输出和而是返回单个布尔值 - 请参阅此答案的底部部分
2021-06-12 03:36:16

我发现在 PowerShell 中作为我的终端VS Code&&在命令中替换;就可以了。

PowerShell的(核心)V7 + -而不是 Windows PowerShell中-现在支持&&||,该管道链运营商,所以你的命令应该上班,在那里

&&执行它的RHS只有在LHS表示成功,类似于如何&&在POSIX兼容的外壳如作品bash并在cmd.exeWindows上。

Windows PowerShell解决方法:

最简洁的解决方法:

npm run build; if ($?) { node ./dist/main.js }

这建立在自动$?变量上,它是一个布尔值,指示最近的命令是否成功。

最强大的解决方案,需要如果命令使用2>重定向

npm run build; if ($LASTEXITCODE -eq 0) { node ./dist/main.js }

基于自动$LastExitCode变量的成功测试,它反映了最近执行的外部程序进程退出代码,避免了 Windows PowerShell [1]中的问题,其中stderr输出的存在与通过错误地重定向它相结合,当进程设置退出代码是.2>$?$false0


[1]这个答案2>总结重定向的问题它们还困扰着 PowerShell (Core) 直到 7.1 版

&&运算符在 linux 中用于依次bash运行这两个命令。(另外,如果第一个命令失败,第二个将不会被执行)

这在 Windows 上的 PowerShell 中不起作用,因此只需拆分两个命令并单独运行它们:

npm run build
node ./dist/main.js

为完整起见,Powershell 的行为与您执行时的行为相同,(command1) -and (command2)并且&&可能实际工作取决于您的 PowerShell 版本。

有关更多信息,请参阅:https : //stackoverflow.com/a/564092/2232127

我已经通过升级 powershell 并重命名 dir 解决了这个问题。通过删除空格路径文件夹名称。现在它可以正常工作了。

Powershell 升级链接

https://github.com/PowerShell/PowerShell/releases/tag/v7.2.0-preview.8