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