Windows 10 -> 'npx create-react-app myapp' 命令不起作用,因为文件路径中有空格用户名

Dan*_*iel 16 reactjs windows-10 npx

我在尝试通过 Windows 10 安装 React 应用程序时遇到了一些问题npx create-react-app appname,收到以下错误消息:

Error: EPERM: operation not permitted, mkdir 'C:\Users\Daniel'
TypeError: Cannot read property 'loaded' of undefined
    at exit (C:\Program Files\nodejs\node_modules\npm\lib\utils\error-handler.js:98:27)
    at errorHandler (C:\Program Files\nodejs\node_modules\npm\lib\utils\error-handler.js:216:3)
    at C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js:77:20
    at cb (C:\Program Files\nodejs\node_modules\npm\lib\npm.js:225:22)
    at C:\Program Files\nodejs\node_modules\npm\lib\npm.js:263:24
    at C:\Program Files\nodejs\node_modules\npm\lib\config\core.js:83:7
    at Array.forEach (<anonymous>)
    at C:\Program Files\nodejs\node_modules\npm\lib\config\core.js:82:13
    at f (C:\Program Files\nodejs\node_modules\npm\node_modules\once\once.js:25:25)
    at afterExtras (C:\Program Files\nodejs\node_modules\npm\lib\config\core.js:173:20)
C:\Program Files\nodejs\node_modules\npm\lib\utils\error-handler.js:98
  var doExit = npm.config.loaded ? npm.config.get('_exit') : true
                          ^

TypeError: Cannot read property 'loaded' of undefined
    at exit (C:\Program Files\nodejs\node_modules\npm\lib\utils\error-handler.js:98:27)
    at process.errorHandler (C:\Program Files\nodejs\node_modules\npm\lib\utils\error-handler.js:216:3)
    at process.emit (events.js:198:13)
    at process._fatalException (internal/bootstrap/node.js:496:27)
Install for create-react-app@latest failed with code 7
Run Code Online (Sandbox Code Playgroud)

解决方案

我开始了一些研究,最后发现,如果您的 Windows 用户名包含空格,例如“C:\Users\Firstname Lastname\AppData\Roaming\npm-cache”,则会出现此问题

经过一些乏味的数小时循环运行并重新阅读有关此问题的多个 GitHub 线程后,我终于找到了一个对我有用的补丁:npm config set cache "C:\Users\Firstname~1\AppData\Roaming\npm-cache" --global从您的终端运行,它将用 ~1 替换空格及其后的所有内容,其中似乎解决了这个问题

我找到这个解决方案的来源是https://github.com/zkat/npx/issues/146#issuecomment-384019497

我在这里发布此评论是为了让任何人免于通过无数循环链接的 github 线程工作。

Ömü*_*giz 28

解决方案

如果您想使用用户名中有空格的当前路径,"C:\Users\Firstname Lastname\AppData\Roaming\npm-cache" 您可以将空格后的字符串替换为"~1"

npm config set cache "C:\Users\Firstname~1\AppData\Roaming\npm-cache" --global

  • 我尝试了这个方法,但它不起作用,它再次显示错误,如“错误:EPERM:不允许操作,mkdir 'C:\ Users \ Firstname〜1'”等。 (3认同)

小智 14

如果您仍然遇到此问题,可以尝试以下操作:

我能够在 Windows 中通过创建一个目录连接到我的没有空间的用户文件夹来解决这个问题。您可以在管理 powershell 中运行这样的命令:

cmd /c mklink /J "C:\Users\myname" "C:\Users\My Name"

然后,您可以使用此连接,就好像它是您的真实用户目录一样:

npm config set cache C:\Users\myname\AppData\Roaming\npm-cache

npm config set prefix C:\Users\myname\AppData\Roaming\npm

(以上应该更新您的用户 .npmrc 文件)

来源

  • 这是唯一对我有用的事情。谢谢! (2认同)