Я работаю над проектом ES6, который я переношу с помощью rollup и babel. Он работает хорошо, за исключением случаев, когда я пытаюсь импортировать модули npm, которые используют commonjs (и, в частности, требуют ("что-то")), получая ошибку "require not defined" в моем браузере (что означает, что она неправильно скомпилировала модули узла из commonjs в ES5). Однако я использую rollup-plugin-node-resolve и rollup-plugin-commonjs, которые должны выполнять эту работу, если я правильно понял...
Вот мой конфигурационный файл сворачивания:
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/**',
})
],
};
и мой конфигурационный файл babel:
{
"presets": [
[
"es2015",
{
"modules": false
}
]
],
"plugins": ["external-helpers"]
}
Примерами модулей, которые я не могу загрузить, являются math.js, nsolvejs, chroma.js, data.gui и т.д.
Вероятно, проблема связана с плагином commonjs, она используется для преобразования cjs в модули es во время сборки, поэтому вы должны включать модули cjs из node_modules вместо src.
commonjs({
include: 'node_modules/**'
})