0
我有一个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虽然我尝试了很多不同的东西排列组合,对我的无知的无知者来说,可能有帮助,但我没有尝试这种简单明了的方法。谢谢。如果您想发表一个答案,我会很乐意并且感激地接受它。 –