我在运行我的世博会项目时遇到了一些问题,而且我对应用程序开发非常陌生(使用React Native / Expo,以及作为一个整体),所以如果这是我错过的一些微不足道的事情,我深表歉意,但我几天来我完全无法解决这个问题,所以我觉得这个 Reddit 子版块是我最好的选择。
当我运行我的博览会应用程序时,我遇到了一长串
Error: ENOENT: no such file or directory, open (insert file name)
该链中的文件是:
在那条长链的末端,我得到了这个:
Metro error: Serializer did not return expected format. The project copy of `expo/metro-config` may be out of date. Error: Unexpected token 'v', "var __BUND"... is not valid JSON
这是有关我的项目的一些信息:
这是我的
metro.config.js
文件:
const { getDefaultConfig, mergeConfig } = require("@react-native/metro-config");
const defaultConfig = getDefaultConfig(__dirname);
const { resolver: { sourceExts, assetExts } } = defaultConfig;
const config = {
...defaultConfig,
transformer: {
babelTransformerPath: require.resolve('react-native-svg-transformer'),
assetPlugins: ['expo-asset/tools/hashAssetFiles'],
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: false,
},
}),
},
resolver: {
assetExts: assetExts.filter(ext => ext !== 'svg'),
sourceExts: [...sourceExts, 'svg'],
},
};
module.exports = mergeConfig(defaultConfig, config);
如果有帮助,这是我的仓库。
我真的不知道我的代码有什么问题以及我应该做什么来修复它。以下是我为尝试阻止此错误再次出现而采取的步骤:
错误已经说过:
Serializer did not return expected format
。因此,您应该删除任何可以覆盖序列化器的配置。
这是我的 metro.config.js
,可以作为您的示例:
// Learn more https://docs.expo.io/guides/customizing-metro
const { getDefaultConfig: getDefaultExpoConfig } = require('expo/metro-config');
const { mergeConfig, getDefaultConfig } = require('@react-native/metro-config');
/** @type {import('expo/metro-config').MetroConfig} */
const expoConfig = getDefaultExpoConfig(__dirname);
const defaultConfig = getDefaultConfig(__dirname);
const { assetExts, sourceExts } = expoConfig.resolver;
const config = {
transformer: {
...expoConfig.transformer,
babelTransformerPath: require.resolve("react-native-svg-transformer/expo")
},
resolver: {
...expoConfig.resolver,
assetExts: assetExts.filter((ext) => ext !== "svg"),
sourceExts: [...sourceExts, "svg"]
}
};
module.exports = mergeConfig(defaultConfig, expoConfig, config);