#node.js #typescript #rollupjs #umd
Вопрос:
В настоящее время у меня есть проект машинописи, который включает в себя Ethers.js, что, в свою очередь, включает bn.js.
Проблема в том, что
Синтаксическая ошибка: Запрошенный модуль ‘./../../../bn.js/lib/bn.js «не предоставляет экспорт с именем «по умолчанию»
Мне кажется, это связано с тем, что BN находится в формате UMD (см. на https://github.com/indutny/bn.js/blob/master/lib/bn.js#L1)
(function (module, exports) {
'use strict';
// Utils
function assert (val, msg) {
if (!val) throw new Error(msg || 'Assertion failed');
}
и соответствующее .ts
заявление является
"use strict";
/**
* BigNumber
*
* A wrapper around the BN.js object. We use the BN.js library
* because it is used by elliptic, so it is required regardless.
*
*/
import _BN from "bn.js";
import BN = _BN.BN;
import { Bytes, Hexable, hexlify, isBytes, isHexString } from "@ethersproject/bytes";
import { Logger } from "@ethersproject/logger";
import { version } from "./_version";
const logger = new Logger(version);
Возможно, есть что-то, что можно было бы сделать при импорте (исходный код) или в свертке. Трудно сказать!
Вот скриншот ошибок сборки (один из вариантов, в зависимости от того, выполняется ли сборка или запуск напрямую)
Вопрос: Есть ли способ преобразовать этот формат в формат ESM в конвейере свертки приложений?
Я пробовал использовать @rollup/plugin-commonjs
и @rollup/plugin-node-resolve
как в
разрешить({ браузер: истина, предпочтения: ложь }), commonjs()]
(или посмотрите проект в целом на https://github.com/veikkoeeva/erc1155sample/blob/main/web/rollup.config.js, ошибка отображается с npm run test
или npm run start
(в журнале консоли)).
Однако до сих пор мне не удавалось это разгадать. Поэтому я пришел сюда, задаваясь вопросом, есть ли глупая проблема, которую я не вижу, или это действительно более сложная проблема.
Edit: indeed, following https://rollupjs.org/guide/en/#error-name-is-not-exported-by-module and maybe named exports
is the key here…