NXGS 警告“在 '@ngxs/store' 中找不到导出 'StateContext'”

Posted

技术标签:

【中文标题】NXGS 警告“在 \'@ngxs/store\' 中找不到导出 \'StateContext\'”【英文标题】:NXGS warning of "export 'StateContext' was not found in '@ngxs/store'"NXGS 警告“在 '@ngxs/store' 中找不到导出 'StateContext'” 【发布时间】:2020-09-20 19:32:42 【问题描述】:

我正在使用 NWRL NX,其中一个库正在使用 NXGS (3.6.2) 作为应用程序的共享状态库。

运行应用程序时,我收到警告 export 'StateContext' was not found in '@ngxs/store 并引用 StateContext 的操作类型,例如下面的示例函数:

@Action(FundListActions.Fetch)
fetch( setState, getState, dispatch: StateContext < StateModel > ) 
    const state = getState();
    setState(
        ...state,
        loaded: false,
        loading: true,
        error: null,
    );


NXGS 正在按预期运行,但我想知道如何修复此警告消息

【问题讨论】:

尝试删除你的 node_modules 文件夹并运行“npm install”。我会在 node_modules 文件夹中查找 @ngxs/store 并查看是否正在导出 StateContext 接口。 我会马上检查的 当我将 NGXS 与 Angular 和 Storybook 一起使用时,我收到了一堆警告。我记得我自己的导出在其他地方也收到了类似的警告,我设法通过从interface 切换到class(或者abstract class,如果你想更明确的话)来修复这些警告。接口和类在 TypeScript 中是可以互换的,但是接口被从 javascript 中剥离(这样的概念在那里不存在),而类仍然存在。因此,如果您使用接口,则会收到警告。适当的修复可能会在 NGXS 库的上游(因为您不控制 StateContext 定义)。 我正在考虑为此创建一个错误报告,但还没有完成。 对此的任何解决方案。我在 StoryBook 中遇到了同样的问题“在 '@ngxs/store' 中找不到导出 'StateContext'”。有一个 SB NgXs 示例,但我没有看到任何特别之处 learnstorybook.com/intro-to-storybook/angular/en/data 【参考方案1】:

来自https://github.com/TypeStrong/ts-loader/issues/653#issuecomment-390889335,找到了以下为我修复此错误的自制 webpack 插件:

const ModuleDependencyWarning = require("webpack/lib/ModuleDependencyWarning")

module.exports = class IgnoreNotFoundExportPlugin 
  apply(compiler) 
    const messageRegExp = /export '.*'( \(reexported as '.*'\))? was not found in/
    function doneHook(stats) 
      stats.compilation.warnings = stats.compilation.warnings.filter(function(warn) 
        return !(warn instanceof ModuleDependencyWarning && messageRegExp.test(warn.message));
      )
    
    if (compiler.hooks) 
      compiler.hooks.done.tap("IgnoreNotFoundExportPlugin", doneHook);
     else 
      compiler.plugin("done", doneHook);
    
  

还有我的故事书的 webpack.config.js:

const IgnoreNotFoundExportPlugin = require('./ignore_not_found_export_plugin');

module.exports = async(config, mode) => 
   // ...

   config.plugins = config.plugins || [];
   config.plugins.push(new IgnoreNotFoundExportPlugin());

   return config;

【讨论】:

以上是关于NXGS 警告“在 '@ngxs/store' 中找不到导出 'StateContext'”的主要内容,如果未能解决你的问题,请参考以下文章

浏览器ssl警告啥意思

警告执行已完成,带有警告存储过程

怎么忽略KEIL的警告

IOS警告消除

Quick.db unwarn 命令取消警告成员中的所有警告

java程序中很多警告,如何修改掉?