Yarn 在尝试构建 Electron 应用程序时抛出错误

Yarn throws an error while trying to build electron app

当我尝试通过 yarn create electron-app "my-app" 创建 Electron 应用程序时,它会抛出一条错误消息

'C:\Users\Lincoln' is not recognized as an internal or external command,
operable program or batch file.
error Command failed.
Exit code: 1
Command: C:\Users\Lincoln Muller\AppData\Local\Yarn\bin\create-electron-app
Arguments: my-app
Directory: C:\Users\Lincoln Muller
Output:

我该怎么办?我是 Yarn 的新手,NPM 运行良好。这也只发生在 Windows 上,当我在 Monterey 上使用我的 iMac 或我的 Linux 笔记本电脑时,命令运行正常。

问题是您的目录名称中有一个 space 而您没有正确转义它。

C:\Users\Lincoln Muller

这看起来你正试图将参数 Muller 传递给程序 C:\Users\Lincoln

我建议只使用不包含 space 或转义 [space 字符的文件夹。

https://www.howtogeek.com/694949/how-to-escape-spaces-in-file-paths-on-the-windows-command-line/

Three Ways to Escape Spaces on Windows There are three different ways you can escape file paths on Windows:

By enclosing the path (or parts of it) in double quotation marks ( ” ).

By adding a caret character ( ^ ) before each space. (This only works in Command Prompt/CMD, and it doesn’t seem to work with every command.)

By adding a grave accent character ( ` ) before each space. (This only works in PowerShell, but it always works.)

似乎 Yarn 假设它可以 运行 程序 create-react-app 而无需考虑文件路径中的 spaces。不幸的是,这不起作用,只有第一个 space 之前的部分被认为是 运行 的程序,因此您会收到 C:\Users\Lincoln 不是有效命令的错误消息。

问题已在 this Yarn issue 中讨论。解决方法中的关键思想是接受 Yarn 的行为并为其提供不包含 spaces 的文件路径。具体思路有两个:

选项 A - 使用目录名称缩写跳过 space
yarn config set cache-folder "C:\Users\Lincol~1\AppData\Local\Yarn\Cache"
yarn config set prefix "C:\Users\Lincol~1\AppData\Local\Yarn"

为此,请确保从实际目录名称中取出 6 个字符,然后附加 ~1。如果 space 恰好出现在前 6 个字符内,则此方法不适合您。

选项 B - 创建另一个用户文件夹,跳过 space(使用联结)
mklink /J "C:\Users\Lincoln-Muller" "C:\Users\Lincoln Muller"
yarn config set cache-folder "C:\Users\Lincoln-Muller\AppData\Local\Yarn\Cache"
yarn config set prefix "C:\Users\Lincoln-Muller\AppData\Local\Yarn"

联结允许两个目录名称指向同一文件系统结构。这意味着有两种方法可以寻址同一个目录。它们的内容不能不同,因为它们是同一个目录。