热重载正在运行,但刷新 (⌘+R) 会导致 blank/white 屏幕

Hot Reload is working, but a refresh (⌘+R) leads to blank/white screen

我当前的 react-native 项目设置有一个(至少对我而言)奇怪的问题(它实际上是一个 PoC,但计划在未来使用这个结构)。

我的结构(摘录):

.
├── BaseApp
├── foobar
└── foobar2

在我的应用程序内部,我通过 yarn add ../foobaryarn add ../foobar2 添加了本地模块(计划在未来的项目设置中使用 yarn-workspaces 或 callstack/haul)。这两个模块都提供了一个带有简单原生部分的 react-native 模块。

我在我的应用程序中导入模块:

import Foobar from 'foobar';
import Foobar2 from 'foobar2';

并在组件中使用它们:

const [status, setStatus] = useState('Init ...');
const [message, setMessage] = useState('---');
const [multiply, setMultiply] = useState(0);

useEffect(() => {
    Foobar2.sampleMethod('Testing', 123, (message: string) => {
        setStatus('Received...');
        setMessage(message);
    });
    Foobar.multiply(3, 7).then(setMultiply);
}, []);

// ...

<Text style={styles.sectionDescription}>Status: {status}</Text>
<Text style={styles.sectionDescription}>Message: {message}</Text>
<Text style={styles.sectionDescription}>Result: {multiply}</Text>

最初应用程序加载并保持 white/blank。没有错误。没有提示可能出了什么问题。当我删除导入并重新加载(+r 或在控制台中键入 r)时,应用程序重新加载并显示有关(确实)缺少变量的错误:

如果我再次添加导入,应用程序会通过热重载 (HMR) 重新加载,瞧,它可以工作...

为什么?我无法向自己解释为什么会这样。也许有人可以帮助我理解这可能会帮助我解决“奇怪”的行为?

找到问题了。在我的例子中,我将 react-native 作为我的一个本地模块中的开发依赖项。结果,有 2 个 react-native 运行时实例导致 3 个不同的“不变违规”错误。问题:在我将调试器附加到应用程序后,我首先看到了这个错误。这使得很难找到这样的(简单的)错误并且非常令人失望:/

如果您有相同的行为而没有打印出任何错误,我希望它能帮助其他人。