高木のブログ

【Deno】Aleph.jsを試した時にうまく動かなかったバージョンの組み合わせ

2021/05/06

※2021年5月6日時点の情報です

【Deno】Aleph.jsで作成したアプリをVercelにデプロイする」を書いた時に試した内容でうまく動かなかったバージョンの組み合わせがあったので記録として残しておく
組み合わせというよりAleph.jsのみの不具合だと思う
まだアルファ版なのでしょうがない

  • Deno 1.6.3 と Aleph.js 0.2.28
  • Deno 1.9.2 と Aleph.js 0.3.0-alpha.32

Deno 1.6.3 と Aleph.js 0.2.28

バージョン

$ aleph --version
aleph.js 0.2.28
deno 1.6.3
v8 8.8.294
typescript 4.1.3

詳細

Get Started - Aleph.jsで紹介されていたバージョンの組み合わせで、aleph devでローカルサーバーを起動した時にコケた

これは最新版のAleph.jsを使うことで解決した

エラーメッセージ

error: Uncaught (in promise) TypeError: TS2345 [ERROR]: Argument of type 'TransformerFactory<SourceFile>' is not assignable to parameter of type 'TransformerFactory<SourceFile> | CustomTransformerFactory'.
  Type 'import("https://cdn.esm.sh/v41/typescript@4.2.4/lib/typescript.d.ts").TransformerFactory<import("https://cdn.esm.sh/v41/typescript@4.2.4/lib/typescript.d.ts").SourceFile>' is not assignable to type 'import("https://cdn.esm.sh/v41/typescript@4.1.2/lib/typescript.d.ts").TransformerFactory<import("https://cdn.esm.sh/v41/typescript@4.1.2/lib/typescript.d.ts").SourceFile>'.
    Types of parameters 'context' and 'context' are incompatible.
      Type 'import("https://cdn.esm.sh/v41/typescript@4.1.2/lib/typescript.d.ts").TransformationContext' is not assignable to type 'import("https://cdn.esm.sh/v41/typescript@4.2.4/lib/typescript.d.ts").TransformationContext'.
        The types of 'factory.createTypeParameterDeclaration(...).parent' are incompatible between these types.
          Type 'import("https://cdn.esm.sh/v41/typescript@4.1.2/lib/typescript.d.ts").CallSignatureDeclaration | import("https://cdn.esm.sh/v41/typescript@4.1.2/lib/typescript.d.ts").ConstructSignatureDeclaration | ... 17 more ... | import("https://cdn.esm.sh/v41/typescript@4.1.2/lib/typescript.d.ts").InferTypeNode' is not assignable to type 'import("https://cdn.esm.sh/v41/typescript@4.2.4/lib/typescript.d.ts").CallSignatureDeclaration | import("https://cdn.esm.sh/v41/typescript@4.2.4/lib/typescript.d.ts").ConstructSignatureDeclaration | ... 17 more ... | import("https://cdn.esm.sh/v41/typescript@4.2.4/lib/typescript.d.ts").InferTypeNode'.
            Type 'JSDocTemplateTag' is not assignable to type 'CallSignatureDeclaration | ConstructSignatureDeclaration | MethodSignature | ArrowFunction | ... 15 more ... | InferTypeNode'.
              Type 'import("https://cdn.esm.sh/v41/typescript@4.1.2/lib/typescript.d.ts").JSDocTemplateTag' is not assignable to type 'import("https://cdn.esm.sh/v41/typescript@4.2.4/lib/typescript.d.ts").JSDocTemplateTag'.
                Types of property 'parent' are incompatible.
                  Type 'import("https://cdn.esm.sh/v41/typescript@4.1.2/lib/typescript.d.ts").JSDoc | import("https://cdn.esm.sh/v41/typescript@4.1.2/lib/typescript.d.ts").JSDocTypeLiteral' is not assignable to type 'import("https://cdn.esm.sh/v41/typescript@4.2.4/lib/typescript.d.ts").JSDoc | import("https://cdn.esm.sh/v41/typescript@4.2.4/lib/typescript.d.ts").JSDocTypeLiteral'.
                    Type 'JSDoc' is not assignable to type 'JSDoc | JSDocTypeLiteral'.
                      Type 'import("https://cdn.esm.sh/v41/typescript@4.1.2/lib/typescript.d.ts").JSDoc' is not assignable to type 'import("https://cdn.esm.sh/v41/typescript@4.2.4/lib/typescript.d.ts").JSDoc'.
                        Types of property 'parent' are incompatible.
                          Type 'import("https://cdn.esm.sh/v41/typescript@4.1.2/lib/typescript.d.ts").HasJSDoc' is not assignable to type 'import("https://cdn.esm.sh/v41/typescript@4.2.4/lib/typescript.d.ts").HasJSDoc'.
                            Type 'ImportEqualsDeclaration' is not assignable to type 'HasJSDoc'.
                              Property 'isTypeOnly' is missing in type 'import("https://cdn.esm.sh/v41/typescript@4.1.2/lib/typescript.d.ts").ImportEqualsDeclaration' but required in type 'import("https://cdn.esm.sh/v41/typescript@4.2.4/lib/typescript.d.ts").ImportEqualsDeclaration'.
    if (reactRefresh) transformers.before!.push(reactRefreshTS())
                                                ~~~~~~~~~~~~~~~~
    at https://deno.land/x/aleph@v0.2.28/tsc/compile.ts:28:49

    'isTypeOnly' is declared here.
            readonly isTypeOnly: boolean;
                     ~~~~~~~~~~
        at https://cdn.esm.sh/v41/typescript@4.2.4/lib/typescript.d.ts:1601:18

関連するIssue

“Get Started” instructions are broken · Issue #190 · alephjs/aleph.js

Deno 1.9.2 と Aleph.js 0.3.0-alpha.32

バージョン

$ aleph --version
aleph.js 0.3.0-alpha.31
deno 1.9.2
v8 9.1.269.5
typescript 4.2.2

詳細

現時点での最新のDenoとAleph.jsの組み合わせで、aleph buildでビルドした時にコケた

この問題は既に修正済みでmasterにマージはされているが、まだリリースはされていない

これはビルドした時のアウトプットするディレクトリが存在していないためにコケる
すでにdistディレクトリ(distはデフォルト)がある場合は問題ないし、ない場合はmkdir distで作ってあげれば良い

Vercelにデプロイしたい場合はバージョンを下げる(v0.3.0-alpha.31にする)か、BUILD COMMANDにディレクトリ作成のコマンドを入れることで問題なくデプロイできることを確認済み

mkdir -p dist && curl -fsSL https://deno.land/x/install/install.sh | sh -s v1.9.2 && /vercel/.deno/bin/deno run -A https://deno.land/x/aleph@v0.3.0-alpha.32/cli.ts build

エラーメッセージ

INFO Compiling...
INFO   {} polyfills.js (ES2015) • 207KB
INFO   {} deps.js • 154KB
INFO   {} shared.js • 542B
INFO   {} /pages/index.js • 5KB
INFO   {} main.js • 382B
error: Uncaught (in promise) NotFound: No such file or directory (os error 2)
      await Deno.mkdir(distDir)
      ^
    at unwrapOpResult (deno:core/core.js:99:13)
    at async Object.mkdir (deno:runtime/js/30_fs.js:101:5)
    at async Application.build (https://deno.land/x/aleph@v0.3.0-alpha.32/server/app.ts:803:7)
    at async default (https://deno.land/x/aleph@v0.3.0-alpha.32/cli/build.ts:18:3)
    at async main (https://deno.land/x/aleph@v0.3.0-alpha.32/cli.ts:99:3)

関連するIssue, Merge Request, Commit


Written by ytkg, Twitter, GitHub

Pixela