javascript - 无法使用汇总 : "require is not defined" 在 commonjs 中导入 npm 模块

标签 javascript node.js ecmascript-6 commonjs rollup

我在一个 ES6 项目上工作,我使用 rollup 和 babel 进行转译。它运行良好,除非我尝试导入使用 commonjs 的 npm 模块(特别是 require('something')),但在我的浏览器中出现错误“require is not defined”(这意味着它没有正确地将 node 模块从 commonjs 编译到ES5).但是,我使用 rollup-plugin-node-resolverollup-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 模块,因此您应该包含来自 node_modules 而不是 src 的 cjs 模块。

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

关于javascript - 无法使用汇总 : "require is not defined" 在 commonjs 中导入 npm 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46131026/

相关文章:

javascript - jQuery 不显示和隐藏标题

javascript - 等待 canvas.toBlob() 后再继续

javascript - 如何使用 Javascript 将动态生成的按钮拆分为列?

javascript - import { AppRegistry } from 'react-native' 之间的区别;并从 'react-native' 导入 AppRegistry ;

'raw' 的 javascript console.log 新功能?

javascript - Backbone - 覆盖哈希更改历史

node.js - 将 Jest 与 Sails.js 一起使用时出现解析错误

node.js - 即使传递数据具有不存在的字段/列,Sequelize 也会创建行

javascript - 上传完成后如何从目录中删除文件?

javascript - 创建 React 组件的 2 种不同方式