无法使用汇总在 commonjs 中导入 npm 模块:"require is not defined"
Can't import npm modules in commonjs with rollup : "require is not defined"
我在一个 ES6 项目上工作,我使用 rollup 和 babel 进行转译。它运行良好,除非我尝试导入使用 commonjs 的 npm 模块(特别是 require('something'))在我的浏览器中出现错误 "require is 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 模块,因此您应该包含来自 node_modules 而不是 src 的 cjs 模块。
commonjs({
include: 'node_modules/**'
})
我在一个 ES6 项目上工作,我使用 rollup 和 babel 进行转译。它运行良好,除非我尝试导入使用 commonjs 的 npm 模块(特别是 require('something'))在我的浏览器中出现错误 "require is 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 模块,因此您应该包含来自 node_modules 而不是 src 的 cjs 模块。
commonjs({
include: 'node_modules/**'
})