Reactjs 当需要在函数中包含动态路径的文件时,如何修复eslint故障?

Reactjs 当需要在函数中包含动态路径的文件时,如何修复eslint故障?,reactjs,react-redux,internationalization,eslint,react-intl,Reactjs,React Redux,Internationalization,Eslint,React Intl,我需要在组件外部,特别是在util文件内部使用react int。为了实现这一点,我正在使用这段代码 但我面临一个eslint失败的问题,它不接受在函数中使用require,也不接受使用动态文件路径 以下是eslint输出: 错误:意外的require()全局require 对require()的错误调用应使用字符串文本导入/无动态require 如有任何意见和建议,将不胜感激 //util.js export function formatMessage(t, locale) { if

我需要在组件外部,特别是在util文件内部使用react int。为了实现这一点,我正在使用这段代码 但我面临一个eslint失败的问题,它不接受在函数中使用require,也不接受使用动态文件路径

以下是eslint输出:

错误:意外的require()全局require 对require()的错误调用应使用字符串文本导入/无动态require

如有任何意见和建议,将不胜感激

//util.js
export function formatMessage(t, locale) {
    if (t=== 0 || t === 2400) {
        const translations 
        =require(`src/locales/${locale.toLowerCase()}.json`));

        const intlProvider = new IntlProvider({ locale, messages: 
        translations }, {});
        const mes = defineMessages({
            morning: {
                id: 'greeting.morning',
                defaultMessage: 'hello',
            },
            evening: {
                id: 'greeting.evening',
                defaultMessage: 'good evening',
            },
       });
       const { intl } = intlProvider.getChildContext();

       return t === 0 ? intl.formatMessage(mes.morning) : 
           intl.formatMessage(mes.evening);
  }
}

您可以在此处阅读更多有关此规则的推理:


如果您非常确定自己在做什么,可以禁用规则在语句之前添加以下注释:
//eslint disable next line global require

实际上,这就是问题所在,我不确定我是否做对了,否则我将禁用规则,它将正常工作。在我看来,这不是一个好的做法。我在文件开头使用
require
的方式与使用
import
的方式相同。如果您只想从文件系统中读取文件,那么可以使用fs模块。例如,您可以将
\uu dirname
process.cwd()
path.join
fs.readFile
一起使用。fs是一个节点核心模块,我明白了。如果是那样的话,我会这样做:。检查控制台,您会发现
locales
是一个带有
en
es
字段的对象。现在,您需要做的唯一一件事就是将那里的
require
替换为
locales[locale.toLowerCase()]