uhyo / eslint-plugin-import-access

https://www.npmjs.com/package/eslint-plugin-import-access
MIT License
355 stars 9 forks source link

Fix issue when importing Node.js builtin modules #8

Closed mozisan closed 1 year ago

mozisan commented 1 year ago

import path from 'path';がエラーになる件について、簡単ではありますが修正案を出します。

ただ、テストで動作確認していたところ、そもそも修正を入れずとも現行のコードでimport path from 'path';は「テスト上は」エラーになりませんでした。 (ただ実際のコードベースで動作させると報告にあったようなエラーは確認できました。)

このPRで加えた変更により、実際のコードベースでのエラーも解消するのは確認できましたが、実際の環境での結果とテスト環境での結果が一致しないのはどうなんだろうと思い、一旦DraftとしてPRを出してみます。

何かこのあたり原因に検討つきますでしょうか・・・? (defaultImportabilityという素晴らしいオプションを実装してくださった @seito2 さんももしかしたらこの件に取り組まれているかもしれないので、周知の意味を込めてちょっとメンションさせていただきます:bow:)

mozisan commented 1 year ago

まだ読み進めたり動作検証してたりする途中ですが、少なくともテスト環境と実際の環境で実行結果が異なる点を1つ見つけました。 以下のgetImmediateAliasedSymbol()の返り値がテスト環境ではundefinedとなり、実際の環境ではSymbolが得られています。 https://github.com/uhyo/eslint-plugin-import-access/blob/master/src/rules/jsdoc.ts#L152-L155

uhyo commented 1 year ago

@mozisan こちらの検証ありがとうございます。とても助かります。 🥺

以下の getImmediateAliasedSymbol() の返り値がテスト環境ではundefinedとなり、実際の環境ではSymbolが得られています。

こちらの問題について調べたところ、テスト環境ではそもそも import path from "path" に型エラーが起きているためそこが undefined になっているようです。テスト用のtsconfig.jsonに次の修正を加えると挙動が一致します。

    "esModuleInterop": true
mozisan commented 1 year ago

@uhyo なるほど!!!!こちらこそありがとうございます:bow:

mozisan commented 1 year ago

@uhyo (cc @seito2 ) ご指摘いただきありがとうございます! テストも挙動が一致することを確認できましたので、これでPRを出させていただきます:pray: 最後の2コミットで少しリファクタもしてみましたが、確認のノイズになるようであればこれらのコミットはなくします! (リファクタした点とその意図はコメントとして残しました)