陷入两次无限制语法违规之中

问题描述 投票:0回答:2

这是我原来的代码:

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 风格。

如何解决这个问题?

ecmascript-6 eslint eslint-config-airbnb
2个回答
68
投票

您想使用

Object.keys(settings).forEach(key => {
  Object.keys(env[key]).forEach(subkey => {

或可能

Object.entries
Object.values
,具体取决于您是否确实想要钥匙。


0
投票

我们看一下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'],
},
© www.soinside.com 2019 - 2024. All rights reserved.