高木のブログ

【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/[email protected]/lib/typescript.d.ts").TransformerFactory<import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").SourceFile>' is not assignable to type 'import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").TransformerFactory<import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").SourceFile>'.
    Types of parameters 'context' and 'context' are incompatible.
      Type 'import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").TransformationContext' is not assignable to type 'import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").TransformationContext'.
        The types of 'factory.createTypeParameterDeclaration(...).parent' are incompatible between these types.
          Type 'import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").CallSignatureDeclaration | import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").ConstructSignatureDeclaration | ... 17 more ... | import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").InferTypeNode' is not assignable to type 'import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").CallSignatureDeclaration | import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").ConstructSignatureDeclaration | ... 17 more ... | import("https://cdn.esm.sh/v41/[email protected]/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/[email protected]/lib/typescript.d.ts").JSDocTemplateTag' is not assignable to type 'import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").JSDocTemplateTag'.
                Types of property 'parent' are incompatible.
                  Type 'import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").JSDoc | import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").JSDocTypeLiteral' is not assignable to type 'import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").JSDoc | import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").JSDocTypeLiteral'.
                    Type 'JSDoc' is not assignable to type 'JSDoc | JSDocTypeLiteral'.
                      Type 'import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").JSDoc' is not assignable to type 'import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").JSDoc'.
                        Types of property 'parent' are incompatible.
                          Type 'import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").HasJSDoc' is not assignable to type 'import("https://cdn.esm.sh/v41/[email protected]/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/[email protected]/lib/typescript.d.ts").ImportEqualsDeclaration' but required in type 'import("https://cdn.esm.sh/v41/[email protected]/lib/typescript.d.ts").ImportEqualsDeclaration'.
    if (reactRefresh) transformers.before!.push(reactRefreshTS())
                                                ~~~~~~~~~~~~~~~~
    at https://deno.land/x/[email protected]/tsc/compile.ts:28:49

    'isTypeOnly' is declared here.
            readonly isTypeOnly: boolean;
                     ~~~~~~~~~~
        at https://cdn.esm.sh/v41/[email protected]/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/[email protected]/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/[email protected]/server/app.ts:803:7)
    at async default (https://deno.land/x/[email protected]/cli/build.ts:18:3)
    at async main (https://deno.land/x/[email protected]/cli.ts:99:3)

関連するIssue, Merge Request, Commit


SNS でシェアする


ytkg

Written by ytkg, Twitter, GitHub