#はじめに
携わっているプロジェクトではflowを利用しているがほぼ使っていない。とりあえず入れて見たというノリらしく、ほんの一部のファイルをチェックしているだけという状況だった。自分にふられたタスクは他のファイルも少しづつflowでチェックしていこうというゆるーいもので、そこで問題にぶち当たった話。
#問題
flowはファイルの先頭に // @flow
とかかけばそのファイルとかそこにimportされているものとかをチェックしてくれるので、部分的にチェックする際には便利。とりあえず適当なファイルを見つけて // @flow
を付けて見たのだが、一向にエラーが出てこない。明らかなエラー文を入力してもエラーが出てこなかった。
#解決
configファイルを漁った。
[ignore]
.*/node_modules
[options]
module.system.node.resolve_dirname=node_modules
module.system.node.resolve_dirname=src
module.ignore_non_literal_requires=true
原因としてはmodule.system.node.resolve_dirname=src
が悪さをしていた。
以下のサイトで原因はわかった。
node_modules以下に配置されたコードは、Flowの検査対象になっているコードから使用されていない限り、検査されない(つまり遅延検査される)ようになりました
Flowがエラーを表示しない、または奇妙なタイミングでエラーを表示することへの対処療法
src配下指定しちゃったので検査対象ではなくなってしまったみたい。バージョンが上がってからこうなってしまったらしいですね。
上記記事では別のjsから参照させる、みたいなことしていましたがそもそもmodule.system.node.resolve_dirname=src
をする意味がなさそうだったのでそこ消しまして、出てきたエラーたちと戦いました。大体frow-typedを追加していく作業でしたね。
#感想
flow入れてみる系記事にmodule.system.node.resolve_dirname=src
さらっと書いてあるところもあったので、そこ見たら割とやっちゃいそうなミスだなーと思う。flow自体もうTSでいいじゃん的な流れになっていそうなので、中々新しい記事見ないし…。