Windows 10 -> 'npx create-react-app myapp' 命令不起作用,因为文件路径中有空格用户名
Windows 10 -> 'npx create-react-app myapp' command does not work because of whitespace username in file path
我 运行 尝试通过 npx create-react-app appname
在我的 Windows 10 上安装 React 应用程序时遇到一些问题,收到以下错误消息:
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
解决方法:
我开始研究并最终发现,如果您的 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 线程的苦差事。
解决方案
如果您想使用用户名 "C:\Users\Firstname Lastname\AppData\Roaming\npm-cache"
中包含 space 的当前路径
您可以将 space 之后的字符串替换为 "~1"
npm config set cache "C:\Users\Firstname~1\AppData\Roaming\npm-cache" --global
如果您仍然无法解决这个问题,可以试试这个:
I was able to fix this in Windows by creating a directory junction to my users folder that didn't have a space in it. You can run a command like this in an administrative powershell:
cmd /c mklink /J "C:\Users\myname" "C:\Users\My Name"
You can then use this junction as if it were your real user directory:
npm config set cache C:\Users\myname\AppData\Roaming\npm-cache
npm config set prefix C:\Users\myname\AppData\Roaming\npm
(the above should update your user .npmrc file)
这是我解决这个问题的方法:
- 从
%APPDATA%
中删除 npm 文件夹
- 将
prefix
和 cache
都设置为不带空格的路径。 请注意,使用用户文件夹以外的 prefix
和 cache
路径可能会使您的系统面临安全风险。
npm config set prefix F:\PathWithoutSpace\
npm config set prefix F:\PathWithoutSpace\ --global
npm config set cache F:\PathWithoutSpace\cache
npm config set cache F:\PathWithoutSpace\cache --global
- 重新安装
yarn
和 creat-react-app
等软件包
- 将
F:\PathWithoutSpace\
添加到您的用户路径环境变量,它已经包含 %APPDATA%\npm
的扩展版本,将不再需要它。
我认为在用户安装 NodeJS 时将这些问题通知用户是值得的。
我确实将节点版本更新到 16.13.2,这解决了问题。
更改文件夹名称中没有空格的 NPM 缓存路径。在我的例子中,我在 C 驱动器的根目录中使用了一个文件夹。
npm config set cache C:\tmp\nodejs\npm-cache --global
我 运行 尝试通过 npx create-react-app appname
在我的 Windows 10 上安装 React 应用程序时遇到一些问题,收到以下错误消息:
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
解决方法:
我开始研究并最终发现,如果您的 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 线程的苦差事。
解决方案
如果您想使用用户名 "C:\Users\Firstname Lastname\AppData\Roaming\npm-cache"
中包含 space 的当前路径
您可以将 space 之后的字符串替换为 "~1"
npm config set cache "C:\Users\Firstname~1\AppData\Roaming\npm-cache" --global
如果您仍然无法解决这个问题,可以试试这个:
I was able to fix this in Windows by creating a directory junction to my users folder that didn't have a space in it. You can run a command like this in an administrative powershell:
cmd /c mklink /J "C:\Users\myname" "C:\Users\My Name"
You can then use this junction as if it were your real user directory:
npm config set cache C:\Users\myname\AppData\Roaming\npm-cache
npm config set prefix C:\Users\myname\AppData\Roaming\npm
(the above should update your user .npmrc file)
这是我解决这个问题的方法:
- 从
%APPDATA%
中删除 npm 文件夹
- 将
prefix
和cache
都设置为不带空格的路径。 请注意,使用用户文件夹以外的prefix
和cache
路径可能会使您的系统面临安全风险。
npm config set prefix F:\PathWithoutSpace\
npm config set prefix F:\PathWithoutSpace\ --global
npm config set cache F:\PathWithoutSpace\cache
npm config set cache F:\PathWithoutSpace\cache --global
- 重新安装
yarn
和creat-react-app
等软件包
- 将
F:\PathWithoutSpace\
添加到您的用户路径环境变量,它已经包含%APPDATA%\npm
的扩展版本,将不再需要它。
我认为在用户安装 NodeJS 时将这些问题通知用户是值得的。
我确实将节点版本更新到 16.13.2,这解决了问题。
更改文件夹名称中没有空格的 NPM 缓存路径。在我的例子中,我在 C 驱动器的根目录中使用了一个文件夹。
npm config set cache C:\tmp\nodejs\npm-cache --global