SyntaxError в node_modules/react-freeze/src/index.tsx: Неожиданный токен, ожидаемый "," (8:1)
Похоже, что Metro пытается обработать TypeScript, который он не понимает. Для Metro требуется предварительно скомпилированный JavaScript.
Я не обновлял никаких зависимостей, поэтому нельзя было вносить изменения, требующие другой обработки файлов TypeScript, или модифицировать Metro.config.js. Я также не менял никакие библиотеки, поэтому ни одна из них не могла содержать некомпилированные файлы TypeScript вместо предварительно скомпилированного JavaScript, который требовал бы от Metro обработки файлов .tsx, что могло бы привести к ошибкам, если синтаксис TypeScript не поддерживается.
Babel и Metro не были изменены, поэтому им не следует обрабатывать ранее игнорированные файлы. Я не добавлял никаких новых зависимостей и не обновлял существующие, поэтому не могли быть добавлены файлы TypeScript, которые Metro сейчас пытается обработать.
У меня была аналогичная ошибка для другой библиотеки, но после изменения файлов Metro.config.js и Babel.config.js она не вернулась, но теперь я получаю ошибку того же типа для реакции-заморозки.
Мой текущий Metro.config.js:
Код: Выделить всё
// Learn more https://docs.expo.io/guides/customizing-metro
const { getDefaultConfig } = require('expo/metro-config');
const exclusionList = require('metro-config/src/defaults/exclusionList');
/** @type {import('expo/metro-config').MetroConfig} */
const defaultConfig = getDefaultConfig(__dirname);
module.exports = {
...defaultConfig,
transformer: {
babelTransformerPath: require.resolve('metro-react-native-babel-transformer'),
assetPlugins: ['expo-asset/tools/hashAssetFiles'],
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: true,
},
}),
},
resolver: {
...defaultConfig.resolver,
extraNodeModules: {
...defaultConfig.resolver.extraNodeModules,
// Add any custom mappings if needed
},
sourceExts: [
...defaultConfig.resolver.sourceExts,
'js', 'jsx', 'json', 'cjs'
],
assetExts: [...defaultConfig.resolver.assetExts, 'ttf', 'webp'],
blacklistRE: exclusionList([/node_modules\/react-freeze\/.*/]),
}
};
defaultConfig.resolver.assetExts.push('ttf', 'webp');
module.exports = defaultConfig;
Код: Выделить всё
module.exports = function (api) {
api.cache(true);
return {
presets: [
"babel-preset-expo",
"@babel/preset-flow",
["module:metro-react-native-babel-preset", {
"useTransformReactJSXExperimental": true
}],
"@babel/preset-typescript"
],
plugins: [
"react-native-reanimated/plugin",
"@babel/plugin-transform-flow-strip-types",
"@babel/plugin-transform-modules-commonjs"
],
ignore: [
/node_modules\/(?!react-native|@react-native|react-clone-referenced-element|@react-native-community|expo|@expo|react-navigation|@react-navigation|@unimodules|unimodules|sentry-expo|native-base|@testing-library|react-native)/,
],
};
};
React Native: 0.76.9
Metro: 0.81.5
Metro Config: 0.81.5
metro-react-native-babel-preset: ^0.77.0
metro-react-native-babel-transformer: ^0.77.0
Подробнее здесь: https://stackoverflow.com/questions/798 ... t-understa
Мобильная версия