0

我有一个使用 NextJs(和 React)和 mobx-state-tree(但可以是 context 或 redux)作为包管理器构建的应用程序。所有商店都是在一个名为 SMK(状态管理工具包)的 npm 包中创建和处理的,我创建它是为了使子商店在我的移动和 Web 应用程序中可重用。

这个怎么运作:

  1. models在 SMK上使用actions和创建子存储并将views其导出为模块。
  2. yarn add @my-repo/smk使用.添加 SMK
  3. 在我的应用程序中创建根存储并从 SMK 导入子存储作为根存储的子存储。
  4. 构建并启动应用程序,一切正常。

但是我需要在本地运行和发布 SMK 以使其更容易开发。我以前使用的解决方案是yalc

使用 yalc 并在本地运行它是这个过程:

  1. 在 SMK 中,运行yarn start. (这会做nodemon --ignore src/index.ts -e js,ts,tsx,json --watch src/ --exec yalc push --scripts
  2. 在 APP 中,运行yalc add @my-repo/smk. (这将添加一个依赖项,如"@my-repo/smk": "file:.yalc/@my-repo/smk")。
  3. 在APP中,运行yarn build,然后yarn start

瞧!一切都很完美,我在本地 SMK 上所做的任何更改都可以在 APP 上完美运行。

但是,当我将它作为 NextJs 的默认值运行时yarn devnext dev不起作用

这是我面临的错误: 在此处输入图像描述

错误解释:由于我只在本地添加了setTestingStateand testingState,所以说它不存在。

可能原因:快速刷新没有正确刷新缓存。

我试过了:

  • 添加// @refresh reset强制它,但没有工作。
  • 停止并启动应用程序。
  • 构建,启动然后运行 ​​dev。(适用于构建而不是开发)

yarn dev使用和解决此问题的解决方案/解决方法是什么yalc

4

1 回答 1

0

看起来这是 NextJs 上的一个错误,我们可以找到一些开发人员要求 NextJs 允许我们禁用快速刷新,看起来他们不在乎或者只是不打算改变它。

所以,我找到了一个第三方库next-remote-watch,它正在为我解决这个问题。基本上,它是一个替代脚本,next dev它可以快速简单地构建和激活观察者。

package.json使用时

"scripts": {
   "start": "next-remote-watch @my-repo/smk"
}
于 2021-12-20T17:33:24.307 回答