不能用汇总的commonjs导入npm模块:“require is not defined”

我在ES6项目上工作,使用汇总和babel进行汇总。 除了当我尝试导入使用commonjs的npm模块(特别是require('something'))在我的浏览器中得到一个错误“require is not defined”(这意味着它没有正确编译节点模块从commonjs到ES5)。 但是,我使用rollup-plugin-node-resolverollup-plugin-commonjs ,如果我能正确理解,应该做这个工作。

这是我的汇总configuration文件:

import babel from 'rollup-plugin-babel'; import eslint from 'rollup-plugin-eslint'; import resolve from 'rollup-plugin-node-resolve'; // to import node_modules packages easily import commonjs from 'rollup-plugin-commonjs'; // convert commonjs to es6 (in case you use require) export default { input: 'src/main.js', output: { file:'build/index.js', format: 'iife' }, sourcemap: 'inline', plugins: [ resolve({ jsnext: true, main: true, browser: true }), commonjs({ include: 'src/**' }), eslint({ exclude: [ 'src/styles/**', ] }), babel({ exclude: 'node_modules/**', }) ], }; 

和我的babelconfiguration文件:

 { "presets": [ [ "es2015", { "modules": false } ] ], "plugins": ["external-helpers"] } 

我无法加载的模块示例有math.js,nsolvejs,chroma.js,data.gui

这个问题可能与commonjs插件有关,它用于在构build时将cjs转换为es模块,因此您应该包含来自node_modules而不是src的cjs模块。

  commonjs({ include: 'node_modules/**' })