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内部查看它所设置的环境变量,然后在运行firebasereact-scripts命令之前在本地终端中进行设置。

10-07 19:20
查看更多