フロープロジェクトをflow init
で初期化しました https://github.com/davezuko/react-redux-starter-kit プロジェクト。
Flowがチェックすると、node_modulesにいくつかのエラーが見つかります。/*フロー* /注釈付きライブラリファイルでエラーが発生しています。
次のようになります。
node_modules/editions/source/index.js:33
33: const {name, editions} = require(packagePath)
^^^^^^^^^^^^^^^^^^^^ The parameter passed to require() must be a literal string.
node_modules/fbjs/lib/Deferred.js.flow:60
60: Promise.prototype.done.apply(this._promise, arguments);
^^^^ property `done`. Property not found in
474: declare class Promise<+R> {
^ Promise. See lib: /private/tmp/flow/flowlib_d34ebcf/core.js:474
node_modules/fbjs/lib/shallowEqual.js.flow:29
29: return x !== 0 || 1 / (x: $FlowIssue) === 1 / (y: $FlowIssue);
^^^^^^^^^^ identifier `$FlowIssue`. Could not resolve name
これらのファイルを無視してフローを作成する必要がありますか?型チェックの正しさに影響を与える可能性があります。
Fbjsとエディションの両方がFlowを使用して記述されています。それぞれに、さまざまな構成の_.flowconfig
_ファイルがあります。表示されているすべてのエラーは、_.flowconfig
_の設定がわずかに異なるために発生します。
最も簡単な修正は、エディションとfbjsが使用しているものをサポートするように_.flowconfig
_を変更することです。
module.ignore_non_literal_requires=true
_セクションに_[options]
_を追加すると、最初のエラーが修正されます。フローは依存関係グラフを理解する必要があるため、デフォルトでは、変数をrequire()
に渡すとエラーが発生します。このオプションは、この要件を緩和します。./node_modules/fbjs/flow/lib
_セクションに_[libs]
_を追加すると、2番目のエラーが修正されます。 fbjsはPromise
の非標準バージョンを使用しますが、そのバージョンのPromise
のライブラリ定義が同梱されています。suppress_type=$FlowIssue
_セクションに_[options]
_を追加すると、3番目のエラーが修正されます。このオプションは、any
タイプを_$FlowIssue
_にエイリアスするだけです。エラーを抑制するためにany
を使用している場合、より明確になります。将来的に、Flowチームは、Flowユーザーが_node_modules/
_を完全に無視し、代わりに https://github.com/flowtype/flow-typed/ からのライブラリ定義に依存することを選択することを想像しますそのため、フロータイプの定義とツールに投資しています。これにより、発生しているような状況を回避できます。
私は個人的にこれを行うことでnode_modulesの下のすべてを無視したいです。
[ignore]
.*/node_modules/.*
次に、flow-typedを使用してすべてのインポートをインストールまたはスタブします https://github.com/flowtype/flow-typed