1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Denoでfirebase-adminが使えるか確認した

Last updated at Posted at 2022-10-08

追記(2023/4/29、deno@1.33.0)

deno v1.33よりfirebase-adminが使えるようになりました!

2023年4月28日にdeno v1.33がリリースされました🎉

上記記事によると、crypto.getCurvesが実装された様子

ということで使ってみたところ、無事使えました!

これでやっとfirebaseを管理者権限でdenoから扱えるようになりましたね(^▽^)/

記事本文

Denoでは最近のアップデートでimport時にnpm:とつけることでNodeモジュールをインポートできるようになりました。

私はあるプロジェクトでfirebase-adminをDenoから利用したいのですが、まだNode.jsのcryptoモジュールが完全にポリフィル出来ていないようで実行できません。
crypto.getCurvesが実装されてない?)

以下の確認コードを実行して上手く使えるようになったらDenoでfirebase-adminを使えそうです!

確認コード

main.ts
import { getAuth } from "npm:firebase-admin/auth";
getAuth();

結果(2023/3/17、deno@1.31.2時点)

PS C:\Users\kamekyame\Documents\gh\kakomimasu\server> deno run -A test.ts
error: Uncaught Error: Not implemented: crypto.getCurves
    at notImplemented (ext:deno_node/_utils.ts:7:11)
    at getCurves (ext:deno_node/internal/crypto/util.ts:107:5)
    at Object.<anonymous> (file:///C:/Users/kamekyame/AppData/Local/deno/npm/registry.npmjs.org/jose/2.0.6/lib/r
egistry/ec_curves.js:5:5)                                                                                           at Object.<anonymous> (file:///C:/Users/kamekyame/AppData/Local/deno/npm/registry.npmjs.org/jose/2.0.6/lib/r
egistry/ec_curves.js:23:4)                                                                                          at Module._compile (ext:deno_node_loading/02_require.js:745:34)
    at Object.Module._extensions..js (ext:deno_node_loading/02_require.js:778:10)
    at Module.load (ext:deno_node_loading/02_require.js:656:32)
    at Function.Module._load (ext:deno_node_loading/02_require.js:513:12)
    at Module.require (ext:deno_node_loading/02_require.js:678:19)
    at require (ext:deno_node_loading/02_require.js:818:16)
過去の結果

結果(2022/10/08、deno@1.26.1時点)

error: Uncaught Error: Not implemented: crypto.getCurves
  throw new Error(message);
        ^
    at notImplemented (https://deno.land/std@0.159.0/node/_utils.ts:25:9)
    at getCurves (https://deno.land/std@0.159.0/node/internal/crypto/util.ts:60:3)
    at Object.<anonymous> (file:///C:/Users/kamekyame/AppData/Local/deno/npm/registry.npmjs.org/jose/2.0.6/lib/registry/ec_curves.js:5:5)
    at Object.<anonymous> (file:///C:/Users/kamekyame/AppData/Local/deno/npm/registry.npmjs.org/jose/2.0.6/lib/registry/ec_curves.js:23:4)
    at Module._compile (deno:ext/node/02_require.js:719:36)
    at Object.Module._extensions..js (deno:ext/node/02_require.js:752:12)
    at Module.load (deno:ext/node/02_require.js:636:34)
    at Function.Module._load (deno:ext/node/02_require.js:493:14)
    at Module.require (deno:ext/node/02_require.js:658:21)
    at require (deno:ext/node/02_require.js:789:18)

補足

esm.sh というサービスもありますが、deno用にバンドルするのに、nodeの機能をstd/nodeで補っている(npm:を使ってimportするときと同じ仕組み)ので、esm.shを使っても同じエラーに遭遇します。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?