在package.json
中的Firefly example project中,
"start": "sh -ac '. ./.env.dev; firebase use dev && react-scripts start'",
在我的Windows 10上,它不能与
&&
一起使用:该脚本使用
;
而不是&&
,应用启动,但无法连接数据库:@firebase/firestore: Firestore (5.0.4): Could not reach Cloud Firestore backend. Connection failed 2 times. Most recent error: FirebaseError: [code=not-found]: The project firefly-boilerplate
does not exist or it does not contain an active Cloud Datastore database.
因此,我必须将
.env.dev
中的Api key ,域和项目名称放入index.js
中才能正常工作。为什么此脚本不能与&&
一起使用?sh -ac
命令的作用是什么? 最佳答案
sh
是用于运行 shell 程序的POSIX命令( shell 程序是为命令行终端供电的程序)。运行sh -ac
的意思是“运行shell命令并自动导出运行期间分配的所有变量”。
通常使用.env
文件来描述运行脚本所需的本地环境变量,因此sh -ac ./.env.dev
基本上是说从.env.dev
加载所有环境变量。
然后,这些环境变量通过&&
在后续命令中可用,该命令在单个上下文中执行多个命令。
简而言之,该脚本对Windows不太友好。您想要做的是在.env.dev
内部查看它所设置的环境变量,然后在运行firebase
和react-scripts
命令之前在本地终端中进行设置。