Javascript 节点_模块中的流类型检查器错误/*
我已经在fresh project中用Javascript 节点_模块中的流类型检查器错误/*,javascript,flowtype,Javascript,Flowtype,我已经在fresh project中用flow init初始化了flow project 当Flow进行检查时,它会在node_模块中发现几个错误。 /*flow*/带注释的库文件中发生错误 看起来是这样的: node_modules/editions/source/index.js:33 33: const {name, editions} = require(packagePath) ^^^^^^^^^^^^^^^^^
flow init
初始化了flow project
当Flow进行检查时,它会在node_模块中发现几个错误。
/*flow*/带注释的库文件中发生错误
看起来是这样的:
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
node_modules/editions/source/index.js:33
33:const{name,editions}=require(packagePath)
^^^^^^^^^^^^^^^^^^^^传递给require()的参数必须是文本字符串。
node_modules/fbjs/lib/Deferred.js.flow:60
60:承诺.原型.完成.应用(这个._承诺,论点);
^^^^属性“完成”。在中找不到属性
474:宣布集体承诺{
^Promise.See lib:/private/tmp/flow/flowlib_d344ebcf/core.js:474
node_modules/fbjs/lib/shallowEqual.js.flow:29
29:返回x!==0 | | 1/(x:$FlowIssue)==1/(y:$FlowIssue);
^^^^^^^^^^标识符“$FlowIssue”。无法解析名称
我应该让Flow忽略这些文件吗?我认为这可能会影响类型检查的正确性。fbjs和版本都是使用Flow编写的。它们都有具有不同配置的
.flowconfig
文件。您看到的所有错误都是由于.flowconfig
的配置略有不同
最简单的修复方法是修改.flowconfig
,以支持edition和FBJ使用的东西
模块.ignore\u non\u literal\u requires=true
添加到[options]
部分应修复第一个错误。默认情况下,如果将变量传递到require()
,则流将出错,因为流希望了解依赖关系图。此选项可缓解此要求/node\u modules/fbjs/flow/lib
添加到[libs]
部分应该可以修复第二个错误。fbjs使用非标准版本的Promise
,但该版本的Promise
附带了库定义suppress\u type=$FlowIssue
添加到[options]
部分应该可以修复第三个错误。此选项只是将any
类型别名为$FlowIssue
。当您使用any
来抑制错误时,它会更加清晰在未来,Flow团队设想Flow用户将选择完全忽略
node\u模块/
,而是依赖来自的库定义,因此我们将围绕Flow类型投资定义和工具。这将避免您遇到的那种情况。我个人喜欢忽略node下的所有内容_通过这样做来创建模块
[ignore]
.*/node_modules/.*
然后,我使用流类型来安装或存根所有导入
我建议不要这样做。如果NPM包具有一流的流支持,这将导致流忽略其类型。不同意,这不是一个好的解决方案,因为您将忽略流类型目录中可能还不存在的包的流定义。
流类型的问题是您必须手动管理E <代码>流类型 DIR和在代码>包中的依赖关系。JSON < /代码>。我的意思是,这不是必须的,但是对于一个干净的项目来说,这是你必须考虑的事情。@ RavaelVIDAURE,当我不忽略My.FuffCiFig中的NoDEN1模块时,我得到了数千个流错误,而我的计算机开始发狂,试图在所有O上运行流。但是,我很想得到npm模块的作者制作的流类型。你如何处理大多数不使用流的模块中给出的所有额外错误?现在有[声明]
,它似乎适用于*/node\u modules/*
,但我不确定它是否有任何负面影响,所以我问:我们现在应该把所有node\u模块
放在[声明]
中吗?