我有三个ES2015模块:store.js
,middleware-config.js
和自动生成middleware-config-settings.js
,包含一些逻辑和导入。
middleware-config-settings.js
开头时, webpack.config.js
生成模块npm start
。
store.js
:
// @flow
...
import middlewareConfigs from './middleware/middleware-config';
...
middleware-config.js
:
// @flow
...
import defaultSettings from './middleware-config-settings';
...
模块middleware-config-settings.js
只是简单的JSON:
// @flow
export default {
profilingMiddlewareConfig: {
isActive: true,
},
reduxDiffStateMiddlewareConfig: {
isActive: true,
params: {
ignoredActionTypes: [],
approvedActionTypes: []
}
}
};
当我使用flow
检查项目时出现错误:
./中间件配置的设置。找不到所需的模块
首先,我尝试忽略该行的流量检查:
// @flow
...
// @FlowFixMe: ignore
import defaultSettings from './middleware-config-settings';
...
如果middleware-config-settings.js
不存在,该apporach工作正常。否则我遇到了另一个问题:创建npm start
middleware-config-settings.js
文件并且下一个flow
执行失败并出现另一个错误:
错误抑制评论。未使用的抑制
其次,我尝试将middleware-config.js
添加到[ignore]
的{{1}}部分。但后来我从.flowconfig
收到了新的错误消息:
./中间件/中间件配置。找不到所需的模块
之后我将store.js
添加到store.js
部分,[ignore]
执行得很好,但我认为这不是正确的方法。
第三种方法类似于第二种方法 - 我刚从flow
删除// @flow
,middleware-config.js
执行正常。而且这种方法也不太好(我的所有模块都应该flow
)。
所以我有两个问题:
flow
项检查中的任何文件的情况下执行无错flow
执行?flow
添加到store.js
部分时,为什么我收到有关middleware-config.js
的错误消息?如果我对documentation的理解是正确的,那么这是不正确的行为:
.flowconfig文件中的[ignore]标题告诉flow在键入代码时忽略与指定正则表达式匹配的文件。
答案 0 :(得分:1)
一些选择:
middleware-config-settings.js.flow
,并将其签入版本控制。然后,Flow将查看该文件而不是查找.js
文件,它将进行类型检查,但实际值将在每次运行时生成。这种方法的主要缺点是确保在进行更改时.js.flow
文件的结构与生成的.js
文件的结构相匹配。npm start
脚本中隐式包含该步骤。然后,只需确保在使用Flow之前运行该构建步骤。关于你的第二个问题,我相信如果你在[ignore]部分添加一些内容,Flow只会假装它根本不存在。因此,如果您从已检查的文件中导入一个被忽略的文件,Flow将给您一个错误。
答案 1 :(得分:0)
我通过将middleware-config-settings.js
导入require
并将模块的名称存储在变量中(以避免Required module not found
错误)并添加{{1}来解决这个问题(避免@FlowFixMe
错误):
The parameter passed to require() must be a literal string.