跳到主要内容

一个确保 react 在使用时版本正确的方法

备注

在 scripts/tasks/version-checks.js 有对发 react 包、react-dom 包、react-test-render 包的 package.json 中 version 版本的检验,对照的是 shared 包的版本号,根钩子 version-check 进行校验。

而 shared 包的版本号是由 build 钩子执行 ./scripts/rollup/build-all-release-channels.js 文件时通过 fs.writeFileSync 写入的。

import reactDOMPackageVersion from 'shared/ReactVersion';
import * as IsomorphicReactPackage from 'react';

export function ensureCorrectIsomorphicReactVersion() {
const isomorphicReactPackageVersion = IsomorphicReactPackage.version;
if (isomorphicReactPackageVersion !== reactDOMPackageVersion) {
throw new Error(
'Incompatible React versions: The "react" and "react-dom" packages must ' +
'have the exact same version. Instead got:\n' +
` - react: ${isomorphicReactPackageVersion}\n` +
` - react-dom: ${reactDOMPackageVersion}\n` +
'Learn more: https://react.dev/warnings/version-mismatch',
);
}
}