Неожиданный токен Webpack реагирует на родной

#javascript #ios #react-native #webpack #ledgerjs

Вопрос:

Я пытаюсь интегрировать подключение к устройствам Ledger nano X в собственный пакет Swift. К сожалению, Ledger предоставляет SDK только в качестве реактивного модуля. Мне не нравится реактивность, и я действительно не хочу интегрировать ее во весь мой пакет Swift и навязывать ее своим пользователям только для этой библиотеки.

В прошлом у меня был ограниченный успех в преобразовании NodeModules в простые файлы .js, которые я могу запускать непосредственно с iOS JavascriptContext . Я использовал webpack, чтобы объединить его в один простой файл js (нет require , import и т. export Д. Ключевые слова). Добавление собственной оболочки Swift, которая позволяет мне исключить все грязные настройки и инструменты разработчика из моего проекта и просто использовать простой JS, когда это необходимо для небольших случаев использования. У меня очень мало опыта в этом, и то, что я делал в прошлом, не работает, часы поиска в гугле не приблизили меня ни на йоту.

Создание всего Ledgerjs с помощью webpack приводило к ошибкам, так как мне нужны только его части, я начал пытаться собрать один из подпакетов @ledgerhq/react-native-hw-transport-ble . Я разветвил проект и добавил это webpack.config.js

 const webpack = require('webpack');
const path = require('path');

module.exports = {
    entry: {
        "ledger_transport_ble": ['./src/awaitsBleOn.ts', './src/BleTransport.ts', './src/monitorCharacteristic.ts', './src/remapErrors.ts', './src/timer.ts', './src/types.ts']
    },
    mode: 'production',
    module: {
        rules: [
            {
                test: /.ts$/,
                use: 'ts-loader',
                exclude: /node_modules/
            },
            {
                test: /.(js|jsx)$/,
                use: 'babel-loader',
                exclude: /node_modules/
            }
        ]
    },
    devtool: 'source-map',
    resolve: {
        extensions: ['.tsx', '.ts', '.js', '.jsx'],
        modules: ['node_modules'],
        fallback: { 
            "stream": require.resolve("stream-browserify") 
        }
    },
    output: {
        filename: '[name].js',
        path: path.resolve(__dirname, 'dist'),
        library: ['[name]'],
        libraryTarget: "var"
    },
    plugins: [
        new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] })
    ],
};

 

с этим .babelrc

 {
    "presets": [
      "@babel/preset-env",
      "@babel/preset-react",
      "@babel/preset-flow"
    ]
}
 

and I get back this error:

 ERROR in ./node_modules/react-native-ble-plx/index.js 11:7
Module parse failed: Unexpected token (11:7)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
| export { State, LogLevel, ConnectionPriority, ScanCallbackType, ScanMode } from './src/TypeDefinition'
| 
> export type {
|   Subscription,
|   DeviceId,
 @ ./src/BleTransport.ts 87:29-60
 

Инструкции в Интернете, куда добавить файл .babelrc, который я добавил выше, но это не имело никакого значения. Я где-то пропустил шаг? Или есть что-то еще, что я должен делать?