我在一台windows 10机器上本地运行所有firebase模拟器。但是,我正在单独运行我的函数模拟器,因为函数目录在不同的项目/位置。似乎触发器没有被模拟,我得到下面的警告。除了触发器/背景功能外,其他功能似乎都运行良好。
解决方案吗?
i emulators: Starting emulators: functions
! hub: emulator hub unable to start on port 4400, starting on 4401 instead.
! emulators: It seems that you are running multiple instances of the emulator suite for project myproject-dev. This may result in unexpected behavior.
! functions: The following emulators are not running, calls to these services from the Functions emulator will affect production: auth, firestore, database, hosting, pubsub
! Your requested "node" version "10" doesn't match your global version "12"
! logging: Logging Emulator unable to start on port 4500, starting on 4501 instead.
! ui: Emulator UI unable to start on port 4000, starting on 4003 instead.
i ui: Emulator UI logging to ui-debug.log
i functions: Watching "R:myprojectmyprojectCloudfunctions" for Cloud Functions...
! functions: The Cloud Firestore emulator is not running, so calls to Firestore will affect production.
i functions[memberUpdate]: function ignored because the firestore emulator does not exist or is not running.
更新:我的文件夹结构
- R:/客户/customer-cloud-project/功能
- R:/客户/customer-web-app/
我可以在位置2运行所有模拟器,除了函数模拟器,因为没有函数目录。所以我在函数文件夹的位置1运行以下命令:Firebase模拟器:start——only functions
这工作得很好,因为它运行2个模拟器实例。但是,触发器/后台功能不会运行,因为它找不到在不同端口上运行的firestore模拟器。
解决这个问题的方法是使用符号链接。这基本上是到位于functions项目中的另一个目录的快捷方式。
如果其他人想这样做,Windows上的命令是:mklink/D "R:firestore-projectfunction "R: cloud-functions-proj functions"
您需要以admin的身份运行命令提示符。
查看我的问题在这里获得更多细节:https://github.com/firebase/firebase-tools/issues/3092 issuecomment - 771159457
注意:创建符号链接时可以指定绝对路径或相对路径。相对是最好的选择,否则它不太可能在别人的环境中工作。在要创建链接的目录中运行:
mklink /D "models" "......myappsrcappmodels"