如何在使用Kotlin多平台时在Firebase的Cloud Functions中包含简单的JavaScript文件作为节点依赖项?
我想包括一个JavaScript文件作为模块依赖。 它是由Kotlin多平台生成的,它被称为common-js.js
。 这是我的package.json
一部分:
"dependencies": { "common-js": "file:common-js" }
我把这个文件放到了node_modules/common-js.js
,它可以和node_modules/common-js.js
firebase serve
一起工作,没有任何问题。
但是,当我运行firebase deploy
,部署将失败:
Build failed: exit status 254 npm ERR! addLocal Could not install /workspace/common-js
如何使用云function来实现这一点? 我尝试把它放在其他目录比node_modules
但它甚至不能在本地工作。
云function目前不支持部署完全物化的node_modules
文件夹。 在部署过程中,将会在package.json中安装所有模块,假设npm可以在npmregistry中find它们。
如果您想要将代码从您的机器上传到云端函数,您必须将其与所有其他源代码一起包含在内。
如果你想部署可以通过其他公共源代码获得的代码(比如GitHub仓库),你应该像这样使用npm来安装:
npm install https://github.com/your-name/your-repo.git
如果您的代码无法公开下载,则需要将其包含在您的源代码中。
正如Doug在这里提到的,Firebase函数不支持上传node_modules
。 我需要与其他来源上传,但我没有find一个方法如何创建node_modules
目录之外的节点模块。 我通过修改生成的index.js
文件来解决它,只需加载一个JS文件,而不是一个节点模块。 这是我的gradle任务:
task modifyCommonJsPath(type: Copy) { from "functions/generated" into "functions" include "index.js" filter { it.replaceAll( "require\\('common-js'\\)", "require('./generated/common-js')" ) } } compileKotlin2Js.finalizedBy modifyCommonJsPath