Невозможно импортировать модули npm в commonjs с помощью накопительного пакета: «требование не определено»

1

Я работаю над проектом 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 и т.д.

Теги:
ecmascript-6
rollup
commonjs

1 ответ

1
Лучший ответ

Вероятно, проблема связана с плагином commonjs, она используется для преобразования cjs в модули es во время сборки, поэтому вы должны включать модули cjs из node_modules вместо src.

 commonjs({
    include: 'node_modules/**'
 })
  • 0
    Я был уверен, что попробовал это в какой-то момент, но это должно было быть с плохой конфигурацией в другом месте. Но теперь это работает, так что спасибо большое :)
  • 1
    Да, прочитайте о форматах модулей js, это окупается!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню