React Native Metro внезапно пытается обработать файлы TypeScript, которые он не может понятьJavascript

Форум по Javascript
Ответить
Anonymous
 React Native Metro внезапно пытается обработать файлы TypeScript, которые он не может понять

Сообщение Anonymous »

Я получаю следующую ошибку после запуска npx expo start --dev-client для запуска моего реагирующего собственного выставочного приложения:
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;
Мой текущий файл Babel.config.js:

Код: Выделить всё

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)/,
],
};
};

Expo: 52.0.47
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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»