这是我原来的代码:
const buildTableContent = (settings) => {
const entries = [];
for (const key in settings) {
for (const subkey in env[key]) {
settings
基本上是字典的字典
{
'env': {'name': 'prod'},
'sass: {'app-id': 'a123445', 'app-key': 'xxyyzz'}
}
它触发了以下爱彼迎风格指南错误:
35:3 错误 for..in 循环遍历整个原型链, 这几乎不是你想要的。使用 Object.{keys,values,entries},并迭代结果数组 无限制语法
所以我将代码更改为
const buildTableContent = (settings) => {
const entries = [];
for (const key of Object.keys(settings)) {
for (const subkey of Object.keys(env[key])) {
按照建议。
现在当我运行
lint
时,我得到了这个:
35:3 错误迭代器/生成器需要 regenerator-runtime,这对于本指南来说太重量级了,不允许使用它们。分别地, 应避免循环以支持数组迭代 无限制语法
所以在我看来,无论哪种方式,他们都违反了某些 lint 风格。
如何解决这个问题?
您想使用
Object.keys(settings).forEach(key => {
Object.keys(env[key]).forEach(subkey => {
或可能
Object.entries
或 Object.values
,具体取决于您是否确实想要钥匙。
我们看一下node团队官方的例子,如何使用opendir:
import { opendir } from 'node:fs/promises';
try {
const dir = await opendir('./');
for await (const dirent of dir)
console.log(dirent.name);
} catch (err) {
console.error(err);
}
如您所见,他们建议使用 for-of 语法以及 console.error。假设我们可以将他们的建议视为确定的,那么我们可能想要关闭这些规则。
要对整个文件关闭它们:
/* eslint-disable no-console */
/* eslint-disable no-restricted-syntax */
要在影响所有源代码的 eslint 配置文件中关闭它们:
rules: {
'no-console': ['off'],
'no-restricted-syntax': ['off', 'ForOfStatement'],
},