我刚开始使用Flow,尝试将其引入现有的Node代码库。
以下是Flow抱怨的两行:
import Module from 'module';
const nodeVersion = Number(process.versions.node.split('.')[0]);
关于这些行的警告分别是:
module. Required module not found
call of method `split`. Method cannot be called on possibly null value
所以看起来Flow并不知道Node环境中标准的一些东西(例如process.versions.node
保证是一个字符串,并且肯定是一个内置节点叫module
)。
但是再一次,Flow的configuration docs表示默认情况下它是节点感知的。我有很多其他的东西,比如import fs from 'fs';
,不引起任何警告。那么我做错了什么?
答案 0 :(得分:2)
模块fs
按预期工作,因为Flow附带了内置定义,请参阅declare module "fs"
此处:https://github.com/facebook/flow/blob/master/lib/node.js#L624
关于process.versions.node
,您可以在同一文件中看到versions
键被键入为可空字符串的映射,没有提及特定的node
属性:{{1 }}。因此,您需要制作PR来改进此定义,或者调整代码以使该值为null。
我想现在关于模块“模块”的答案是显而易见的 - versions : { [key: string] : ?string };
中的Flow中没有该模块的内置定义。您可以编写自己的定义,并可选择将它们与PR一起发送给Flow团队。您也可以尝试搜索github,有人可能已经完成了这项工作。
那个lib/node.js
目录非常有用,它有DOM的流定义和其他内容。