如何在使用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