Реагирует на собственную ошибку импорта: невозможно разрешить модуль с помощью .bin (как импортировать файл определенного типа?) - PullRequest
2 голосов
/ 17 марта 2020

Я получаю сообщение об ошибке при запуске собственного собственного реагирующего приложения.

Unable to resolve "./tfjs_model_to_use_quantized/content/tfjs_model_to_use/group1-shard1of1.bin" from "components\ImageInput.js"

Я пытаюсь импортировать файл с именем group1-shardof1.bin в мой код JS.

Другие требуемые функции (например, для файла json) работают нормально, и путь к файлу для этой указанной c требующей функции является правильным. Я думал, что проблема заключается в том, что расширение .bin не поддерживается для экспорта в нативный Код реакции:

const modelWeights = require('./tfjs_model_to_use_quantized/content/tfjs_model_to_use/group1-shard1of1.bin')

Что я пробовал, я добавил:

"packagerOpts": {
      "assetExts": ["bin", "pb", "txt"]
}

в моем приложении . json, с расширением bin.

Как я могу настроить свое реактивное приложение, чтобы иметь возможность импортировать расширение файла .bin в файл JS? Было бы здорово, если бы кто-нибудь мог помочь мне с этим вопросом.

1 Ответ

0 голосов
/ 17 марта 2020

Я нашел ответ. Дополнительные типы файлов, которые должны быть разрешены с помощью реагирующего нативного файла, можно настроить в metro.config. js:

const blacklist = require('metro-config/src/defaults/blacklist');
module.exports = {
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        experimentalImportSupport: false,
        inlineRequires: false,
      },
    }),
  },
  resolver: {
    // (add 'bin' to assetExts)
    assetExts: ['bin', 'txt', 'jpg', 'png', 'ttf'],
    sourceExts: ['js', 'json', 'ts', 'tsx', 'jsx'],
    blacklistRE: blacklist([/platform_node/])
  },
};

Ключевая часть - это часть assetExts, добавляющая «bin» в список. В моем конкретном случае c не было никакого файла metro.config. js, созданного по какой-то причине, но я создал новый файл с вышеуказанным кодом, и импорт .bin работал нормально.

...