У меня есть модуль CommonJS, называемый inner.js
, который определяет функцию, а затем экспорт, которые функционируют в качестве всего модуля:Накопитель с модулем CommonJS, экспортирующим неназванную функцию как модуль?
// inner.js, a legacy CommonJS module
var foo = function() { return 42; };
module.exports = foo;
В узле, можно легко проверить, что это работает, как есть.
> var inner = require('./inner.js');
> inner() // prints 42
Но это наследство модуль, который я хотел бы использовать из модуля ES6, называется outer.js
:
// outer.js, an ES6 module
import * as inner from "./inner.js";
export function bar() { return inner(); }
Я вижу, что rollup-plugin-commonjs
обычно используется в таких ситуациях, но я не могу получить он должен работать, когда модуль CommonJS inner.js
экспортирует функцию как весь модуль. Если после запуска накопительного пакета и демпинга результата loadme.js
, я пытаюсь запустить загрузить внешний модуль ES6 и попытаться вызвать функцию, первоначально определенную во внутреннем модуле CommonJS, я получаю сообщение об ошибке:
> var outer = require('./loadme.js')
undefined
> outer.bar()
TypeError: inner$2 is not a function
at Object.bar (/.../so-rollup-question/loadme.js:27:25)
Я думаю, что я просто не загрузите модуль CommonJS правильно, таким образом, чтобы сам модуль функционировал как функция. Я не достаточно хорошо знаком с UMD, чтобы получить что-либо значимое из проверки вывода накопительного пакета.
Остальная часть этого сообщения представляет собой минимальный пример.
Вот мой очень простой index.js
:
// index.js
export {bar} from "./outer.js";
который читает мой накопительный пакет конфигурации:
// rollup.config.js
import npm from "rollup-plugin-node-resolve";
import commonjs from 'rollup-plugin-commonjs';
export default {
entry : "index.js",
format : "umd",
moduleName : "sphereModule",
plugins : [ npm({jsnext : true}), commonjs() ],
dest : "loadme.js"
};
У меня есть complete clonable repository, демонстрирующий проблему.
Почему вы делаете 'импорта * как внутренний из«./inner.js»,' 'если inner.js' только экспортирует функцию? Вы пытались «импортировать внутреннее из» ./inner.js?; '? –
@FelixKling Хотя я пробовал много разных перестановок вещей, которые, возможно, помогли мне в неведении, но я не пробовал это очень просто и очевидно. Спасибо. Если вы будете так любезны, чтобы опубликовать ответ, я с радостью и благодарностью соглашусь с ним. –