«Невозможно использовать оператор импорта вне модуля` при объединении RN и ts-узла

#typescript #react-native #ts-node

#typescript #реагирующий -собственный #ts-узел

Вопрос:

Я создал небольшой инструмент CLI для автоматизации некоторых процессов в моем проекте React Native. Недавно мне пришлось обновить RN from 0.61.4 to 0.63.2 для решения некоторых проблем iOS. После этого обновления CLI больше не работает.

Ошибки:

 yarn ts-node -r tsconfig-paths/register ./scripts/check
import typeof AccessibilityInfo from './Libraries/Components/AccessibilityInfo/AccessibilityInfo';
^^^^^^
SyntaxError: Cannot use import statement outside a module
  

и

 yarn ts-node -r esm -r tsconfig-paths/register ./scripts/check
import typeof AccessibilityInfo from './Libraries/Components/AccessibilityInfo/AccessibilityInfo';
       ^
SyntaxError: Invalid or unexpected token
  

Я перепробовал кучу решений, но чувствую, что я исправляю A и нарушаю B, и наоборот.
Важно отметить, что некоторые файлы из этого CLI совместно используются с приложением RN, и приложение RN работает нормально.

Я считаю, что мне нужно очистить flow типизацию RN , но @babel/plugin-transform-flow-strip-types это не помогло

Комментарии:

1. AccessibilityInfo находится внутри React Native кода, поэтому внутри node_modules

2. import typeof недопустимый код, import type является ли целью импортировать экспорт типа по умолчанию или вы пытаетесь захватить тип модуля?

3. @TadhgMcDonald-Jensen Я считаю, что ОС «import typeof» из типов потоков, вы можете проверить файл по адресу github.com/facebook/react-native/blob/master/index.js

4. Этот файл не существует в версии 0.61 , поэтому очевидно, что архитектура изменилась. ts-node определенно, у него нет никаких возможностей для работы с потоковым вводом в файле js, RN полагается на Babel, чтобы справиться с этим, поэтому я немного удивлен, что это сработало в предыдущей версии…

5. @TadhgMcDonald-Дженсен есть какие-нибудь предложения о том, как заставить эту команду узла работать с typescript и прочим? Я пытался @babel/node , но тоже потерпел неудачу по тем же причинам…