在终端上防止需要周期警告

时间:2019-03-28 07:04:20

标签: react-native intellij-idea expo

我一直在得到允许循环,但可能会导致未初始化的值。考虑重构以消除循环的需要。在我的终端上发出警告,它使调试程序变得如此困难。

我用过

YellowBox.ignoreWarnings([
  'Require cycle:', 
])

还有

console.disableYellowBox = true;

但是都没有奏效。 YellowBox.ignoreWarnings仅适用于移动设备上显示的警告,而不适用于我的IDE终端上的警告。我如何防止在终端上收到这些警告。

3 个答案:

答案 0 :(得分:1)

我注释了以下几行,它们不再出现在终端和设备中。

node_modules / metro / src / lib / polyfills / require.js(第114行)

  console.warn(
    "Require cycle: ".concat(cycle.join(" -> "), "\n\n") +
      "Require cycles are allowed, but can result in uninitialized values. " +
      "Consider refactoring to remove the need for a cycle."
  );

注释掉该警告后,重新启动项目解决了我的问题。 PS。我正在使用博览会。

答案 1 :(得分:0)

我注释掉了console.war,在node_modules/expo/build/environment/muteWarnings.fx.js第10行中发出了警告。

console.warn = function warn(...args) {
    // if (args.length > 0 &&
    //     typeof args[0] === 'string' &&
    //     (/^Require cycle: .*node_modules/.test(args[0]) ||
    //         /Use UIManager\.getViewManagerConfig\('LottieAnimationView'\) instead\./.test(args[0]) ||
    //         /ReactNative\.NativeModules\.LottieAnimationView\.getConstants/.test(args[0]))) {
    //     return;
    // }
    // originalWarn.apply(console, args);
};

答案 2 :(得分:0)

我选择了一种更安全的方法:) 我使用补丁包来确保我仍然看到自己的错误......嗯......需要周期 :)

地铁+0.59.0.patch

diff --git a/node_modules/metro/.DS_Store b/node_modules/metro/.DS_Store
new file mode 100644
index 0000000..21ab2f3
Binary files /dev/null and b/node_modules/metro/.DS_Store differ
diff --git a/node_modules/metro/src/lib/polyfills/require.js b/node_modules/metro/src/lib/polyfills/require.js
index 8c04756..3b208f6 100644
--- a/node_modules/metro/src/lib/polyfills/require.js
+++ b/node_modules/metro/src/lib/polyfills/require.js
@@ -114,11 +114,14 @@ function metroRequire(moduleId) {
         .map(id => (modules[id] ? modules[id].verboseName : "[unknown]")); // We want to show A -> B -> A:
 
       cycle.push(cycle[0]);
-      console.warn(
-        `Require cycle: ${cycle.join(" -> ")}\n\n` +
+      const cycleString = cycle?.join(" -> ");
+      if (!(cycleString?.startsWith('node_modules/'))) {
+        console.warn(
+          `Require cycle: ${cycleString}\n\n` +
           "Require cycles are allowed, but can result in uninitialized values. " +
           "Consider refactoring to remove the need for a cycle."
-      );
+        );
+      }
     }
   }