wsl spawn cmd.exe ENOENT
今天用wsl发现一个奇怪的bug,按理说wsl下不应该直接调用sh吗
使用Create React App
创建react应用,yarn start
一下,输出Starting the development server...
之后就抛出一个Error: spawn cmd.exe ENOENT
,我寻思这wsl怎么又调用到windows下的cmd.exe
,真特娘的奇怪嘿
去 create-react-app
翻了下源码,执行了一个打开浏览器的操作,顺藤摸瓜发现 open
类库判断windows不只是检查process.platform值,顺带把wsl和docker环境也一起用作判断条件了,下面拼接的命令就是最后的万恶之源
fix这个bug的两个办法
- 将
/mnt/c/Windows/System32
加回wsl的环境变量这样就可以拉起默认浏览器 react-scripts/scripts/start.js
里注释掉openBrowser(url.localUrlForBrowser);