node.js - 在 Flow NPM 包中,抑制问题以使用户应用程序看不到错误的正确方法是什么?

标签 node.js reactjs npm flowtype

如果您使用类似 $FlowIssue 的内容,则不能保证它会出现在每个人的 .flowconfig 文件中。如果您声明一个库接口(interface),那么它似乎只适用于给定的项目,而不适用于导入您的包的其他项目(即使您在 NPM 包中提供了 .flowconfig 和接口(interface)文件)。

这是我试图抑制使用我的包的应用程序中的错误的代码:

  // $FlowIssue
  const isSSRTest = process.env.NODE_ENV === 'test' // $FlowIssue
    && typeof CONFIG !== 'undefined' && CONFIG.isSSR

CONFIG 是 Jest 运行测试时存在的全局变量。

我之前有一个 CONFIG 的接口(interface)声明,但在用户应用程序中并没有得到尊重 - 也许我缺少一种使其工作的机制?通过此解决方案,至少用户很有可能获得 $FlowIssue 抑制评论。但还是不够好。

使用 Flow 构建的包的惯用解决方案是什么?

最佳答案

声明全局变量

这是声明全局变量的方法: 声明 var CONFIG: any;。您可以/应该使用实际类型,而不是 any

错误抑制

在 flow v0.33 中,他们引入了 this change :

suppress_comment now defaults to matching // $FlowFixMe if there are no suppress_comments listed in a .flowconfig

这意味着如果您使用 $FlowFixMe,您的错误被抑制的可能性更大。

关于node.js - 在 Flow NPM 包中,抑制问题以使用户应用程序看不到错误的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42154415/

相关文章:

javascript - 控制台记录 sinon.spy() 显示 [Function] 而不是 spy 的内容

node.js - Node.js 事件循环的概念与 CICS 伪对话式编程相同吗?

javascript - API不在Json中吗?

reactjs - 找不到模块 '@babel/preset-plugin-transform-object-assign'

css - 我如何找出导致我的 css 在 chrome 中被删除线的原因?

node.js - 如何使用sequelize ORM删除触发器

reactjs - React ES6 和传递 props

node.js - Angular 2 - 使用 "dist"而不是 "npm"为生产构建 "ng build -prod"

reactjs - 运行 npm test 时出现 TypeError : environment. dispose 不是函数

node.js - 分配失败 - npm 安装时进程内存不足