node.js - Transformácia UMD modulov na ES moduly v RollupJS („Požadovaný modul X neposkytuje export s názvom ‚default‘“)
Momentálne mám projekt v TypeScripte, ktorý zahŕňa Ethers.js, ktorý zase zahŕňa bn.js.
Problém je
SyntaxError: Požadovaný modul './../../../bn.js/lib/bn.js' neposkytuje export s názvom 'default'
Zdá sa mi, že je to preto, že BN je vo formáte UMD (pozri na 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');
}
a príslušná deklarácia .ts je
"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);
Možno existuje niečo, čo by sa dalo urobiť pri importovaní (zdroji) alebo v Rollupe. Ťažko povedať!
Tu je snímka obrazovky chýb zostavenia (jedna varianta, v závislosti od toho, či sa zostavuje alebo spúšťa priamo)
Otázka: Existuje spôsob, ako tento formát pretransformovať na formát ESM v aplikačnom rollup pipeline?
Skúšal som použiť @rollup/plugin-commonjs a @rollup/plugin-node-resolve ako v
resolve({ browser: true, preferBuiltins: false }), commonjs()]
(alebo si pozrite celý projekt na https://github.com/veikkoeeva/erc1155sample/blob/main/web/rollup.config.js, chyba sa zobrazuje pri npm run test alebo npm run start (v konzolovom výpise)).
Doteraz sa mi to však nepodarilo rozlúštiť. Preto som sem prišiel, s otázkou, či je tu nejaký hlúpy problém, ktorý nevidím, alebo či ide o naozaj ťažšiu záležitosť.
Upraviť: naozaj, podľa https://rollupjs.org/guide/en/#error-name-is-not-exported-by-module a možno menované exporty sú tu kľúčové...
