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"
联结允许两个目录名称指向同一文件系统结构。这意味着有两种方法可以寻址同一个目录。它们的内容不能不同,因为它们是同一个目录。
当我尝试通过 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"
联结允许两个目录名称指向同一文件系统结构。这意味着有两种方法可以寻址同一个目录。它们的内容不能不同,因为它们是同一个目录。