我有一个建立在expo 之上的 react native 应用程序,最近try 将我的expo SDK从48版升级到50版.
显然,这并不是一个平稳的过渡.我清除错误已经有一段时间了,但我被困在了这个问题上:
错误:发现node_modules/expo-modules-core/build/NativeViewManagerAdapter.native.js:/Users/maximilianofriedl/Documents/examedi/patient-app/node_modules/expo-modules-core/build/NativeViewManagerAdapter.native.js:重复__自立属性.您最有可能使用的是已弃用的Transform-Reaction-JSX-self Babel插件.使用自动运行时,会自动设置__SOURCE和__SELF.请从您的Babel配置中删除Transform-Reaction-JSX-SOURCE和Transform-Reaction-JSX-self.
它引用了我的Babel配置中的transform-react-jsx-source
和transform-react-jsx-self
插件,但是...我没有这些东西.
下面是我的babel.config.js人的样子:
module.exports = function (api) {
api.cache(true);
return {
presets: ["babel-preset-expo", "module:metro-react-native-babel-preset"],
plugins: [
"nativewind/babel",
"babel-plugin-root-import",
[
"@babel/plugin-proposal-class-properties",
{
loose: true,
},
],
[
require.resolve("babel-plugin-module-resolver"),
{
root: ["./src/"],
alias: {
test: "./test",
},
},
],
"react-native-reanimated/plugin",
],
};
};
我不确定这是否与问题有关,但我在某个地方读到我的metro.config.js也可能是问题,所以这里是它的样子:
const { getDefaultConfig } = require("@expo/metro-config");
// reference: https://github.com/react-native-svg/react-native-svg/blob/main/USAGE.md
module.exports = (async () => {
const {
resolver: { sourceExts, assetExts },
} = await getDefaultConfig(__dirname);
assetExts.push("cjs");
return {
transformer: {
assetPlugins: ["expo-asset/tools/hashAssetFiles"],
babelTransformerPath: require.resolve("react-native-svg-transformer"),
},
resolver: {
assetExts: assetExts.filter((ext) => ext !== "svg"),
sourceExts: [...sourceExts, "svg"],
},
};
})();
我认为package.json件事中最重要的是:
"dependencies": {
"babel-preset-expo": "^10.0.0",
},
"devDependencies": {
"@babel/core": "^7.20.0",
"@babel/plugin-proposal-class-properties": "^7.18.6",
"babel-plugin-module-resolver": "^5.0.0",
"babel-plugin-root-import": "^6.6.0",
"metro-react-native-babel-preset": "^0.77.0",
"react-native-svg-transformer": "^1.3.0",
},
有谁知道我该怎么解决这个问题吗?