Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在工作区中,工作区不会发出错误或警告_Javascript_Reactjs_Yarnpkg_Yarn Workspaces - Fatal编程技术网

Javascript 在工作区中,工作区不会发出错误或警告

Javascript 在工作区中,工作区不会发出错误或警告,javascript,reactjs,yarnpkg,yarn-workspaces,Javascript,Reactjs,Yarnpkg,Yarn Workspaces,为了使用Thread Workspace和craco创建monorepo,我遵循了以下步骤。 它工作得非常好,除了一件事:公共(组件)库的错误/警告不会发送到控制台。 结构非常简单: monorepo |-packages |-components |-fe Fe是使用组件库的主要webApp。 FE正确发出所有警告,但部件不正确 如何使共享组件发出警告/错误 更新: 在本回购协议中复制的步骤: 您需要更改的是Create React应用程序所使用的。 在本例中,我将ESLint的上下

为了使用Thread Workspace和craco创建monorepo,我遵循了以下步骤。 它工作得非常好,除了一件事:公共(组件)库的错误/警告不会发送到控制台。 结构非常简单:

monorepo
|-packages
  |-components
  |-fe
Fe是使用组件库的主要webApp。 FE正确发出所有警告,但部件不正确

如何使共享组件发出警告/错误

更新:

在本回购协议中复制的步骤:

您需要更改的是Create React应用程序所使用的。 在本例中,我将ESLint的上下文更改为monorepo的根(根)

下面是一个更新的
craco.config.js
,它应该可以做到这一点:

// craco.config.js
const path = require("path");
const { getLoader, loaderByName } = require("@craco/craco");
const { getPlugin, pluginByName } = require("@craco/craco/lib/webpack-plugins")
const absolutePath = path.join(__dirname, "../components");
module.exports = {
  webpack: {
    alias: {},
    plugins: [],
    configure: (webpackConfig, { env, paths }) => {
      const { isFound, match } = getLoader(
        webpackConfig,
        loaderByName("babel-loader")
      );
      if (isFound) {
        const include = Array.isArray(match.loader.include)
          ? match.loader.include
          : [match.loader.include];
        match.loader.include = include.concat([absolutePath]);
      }

      // Change context of ESLint Webpack Plugin
      const { match: eslintPlugin } = getPlugin(webpackConfig, pluginByName("ESLintWebpackPlugin"));
      eslintPlugin.options['context'] = path.join(__dirname, "../..");

      return webpackConfig;
    }
  }
};

我还在这里更新了您的复制回购协议:

您能准确地分享发生了什么吗?还共享可复制的回购?补充回购。这篇文章的链接也包含了所有的细节。编译后,共享库“组件”不会发出任何警告/错误。例如,如果Button.js中引入了警告或错误,我将在gitbash控制台中看到它正在编译,然后我将得到消息“Compiled successfully”。没有警告,没有错误。您运行时希望组件中出现错误吗?请在repo中查看以下未使用的导入:packages/components/src/Button.js:(useffect,useCallback)。或者尝试使用未声明的变量。再次没有错误,在FE中尝试相同的事情,发出警告/错误。啊,我明白了。我认为那样做是行不通的。为什么不为从根repo扩展的每个包设置一个eslint,然后在运行start之前运行它。出于某种原因,如果我使用错误边界,我会得到一个错误:无法加载要从中扩展的配置“/node_modules/kcd scripts/eslint.js”。引用自:…my monorepo\node\u modules\react error boundary\package.json,整个应用程序都在一个ErrorBoundary内,当我删除它时它工作了。好吧,这听起来像是eslint出于某种原因试图在
node\u modules/react error boundary
包中删除代码。我知道这里发生了什么,今天晚些时候我将尝试重现该错误。Ok在代码中输入了一个错误,而不是
path.join(\uu dirname,../../)
我们必须使用
path.join(\uu dirname,../../)
(没有拖尾
//code>)。现在应该可以了,我已经更新了答案和叉子。