使用Firebase Admin在Deno抛出HTTP 500 https://esm.sh/v103/@firebas



当尝试构建/部署这个Deno函数时,

import { serve } from "https://deno.land/std@0.171.0/http/server.ts";
import "https://deno.land/x/xhr@0.2.1/mod.ts";
import { installGlobals } from "https://deno.land/x/virtualstorage@0.1.0/mod.ts";
import admin from 'https://esm.sh/firebase-admin@11.5.0';
installGlobals();
const serviceAccount = Deno.env.get('service_account');
if (!serviceAccount) {
throw new Error('service account details not available');
}
admin.initializeApp(JSON.parse(serviceAccount));
serve((_req) => {
admin.database().ref('/test').set('Hi there');
return new Response("Maybe done?", {
headers: { "content-type": "text/plain" },
});
});

我得到以下错误

Import 'https://esm.sh/v103/@firebase/database-compat@0.3.1/deno/standalone.js' failed: 500内部服务器错误在https://esm.sh/v103/firebase-admin@11.5.0/deno/database.js: 2:901

有什么我能做的吗?或者我必须在函数中找到并使用不同版本的firebase-admin吗?

如果您打开unpkg上的包,您可以看到包导出了这个"独立的"。

@firebase/database-compat@0.3.1/
|-- dist/
| |-- database-compat/
| |-- node-esm/
| |-- index.esm2017.js
| |-- index.esm5.js
| |-- index.js
| |-- index.standalone.js  # @firebase/database-compat@0.3.1/standalone entry point
| `-- ...
|-- standalone/
| `-- package.json
|-- CHANGELOG.md
|-- README.md
`-- package.json

esm.sh似乎没有尝试解析@firebase/database-compat@0.3.1/standalone/package.json中包含的指令,而是认为它应该映射到@firebase/database-compat@0.3.1/standalone.js。由于这种行为,我们可以告诉esm.sh,我们想要解析我们自己的@firebase/database-compat/standalone副本。

https://esm.sh/firebase-admin@11.5.0?external=@firebase/database-compat/standalone

esm.sh的响应中,您将看到库现在使用标签导入。

// ...
import ___firebase_database_compat_standalone$ from "@firebase/database-compat/standalone";
// ...

然后你需要在你的import_map.json中添加一个条目,告诉Deno它应该从哪里得到这个文件:

// import_map.json
{
"imports": {
"@firebase/database-compat/standalone": "SOME_URL",
// ...
}
}

不幸的是,我无法弄清楚需要得到这个包来解决的语法,因为下面的url不起作用(?target=deno允许我在浏览器中解决它来戳)。这似乎是一个已知的错误(见ije/esm.sh/issues/356)。

https://esm.sh/@firebase/database-compat@0.3.1/dist/index.standalone.js?target=deno
https://esm.sh/@firebase/database-compat@0.3.1/index.standalone.js?target=deno
https://esm.sh/@firebase/database-compat@0.3.1/standalone?target=deno
https://esm.sh/@firebase/database-compat@0.3.1/standalone/package.json?target=deno

最新更新