1

我想包含一个 javascript 文件作为模块依赖项。它由 Kotlin 多平台生成,名为common-js.js. 这是我的一部分package.json

"dependencies": {
    "common-js": "file:common-js"
}

我把这个文件放进去node_modules/common-js.js,它firebase serve没有问题。

但是,当我运行时firebase deploy,部署失败并显示:

Build failed: exit status 254
npm ERR! addLocal Could not install /workspace/common-js

如何使用 Cloud Functions 实现这一目标?我尝试将它放到其他目录中,node_modules但它甚至在本地也不起作用。

4

2 回答 2

3

Cloud Functions 当前不支持部署完全具体化的node_modules文件夹。在部署过程中,它将在你的 package.json 中安装所有模块,并假设 npm 可以在 npm 注册表中找到它们。

如果您想将代码从您的机器上传到 Cloud Functions,您必须将其与所有其他源代码一起包含在内。

如果您想要部署可以通过其他一些公共资源(例如 GitHub 存储库)获得的代码,您应该使用 npm 安装它,如下所示:

npm install https://github.com/your-name/your-repo.git

如果您的代码无法公开下载,则需要将其包含在您的源代码中。

于 2018-02-05T22:26:21.583 回答
1

正如 Doug 在这里提到的,Firebase 函数不支持上传node_modules. 我需要将它与其他来源一起上传,但我没有找到如何在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
于 2018-02-06T15:46:20.333 回答