我有一个正在使用d3的软件包。当然,在我的rollup.config.js
文件中,我将d3
声明为外部软件包和全局软件包:
let config = {
...,
output: {
external: ['d3'],
globals: {d3:'d3'},
...,
},
...
}
我可能在某个文件中有一个函数,例如:
import * as d3 from 'd3'
...
export function someFunc(arg1, arg2) {
d3.select(arg1)
d3.min(arg2)
}
...
当我将代码与rollup -c
捆绑在一起时,我会得到一个很好的警告
src/modules/some-file.js
selection is not exported by node_modules/d3/dist/d3.node.js
所以我回到我的rollup.config.js
文件并添加以下内容:
// inside config
plugins: [
...,
commonjs({
...,
namedExports: {
'node_modules/d3/dist/d3.node.js': [
'selection', 'min',
]
},
...,
})
...,
]
现在我的捆绑包没有警告或投诉...但是当我使用捆绑的代码时,会出现类似以下错误:
TypeError: d3_node_1 is null
TypeError: d3_node_2 is null
在代码中我有d3_node_1
的地方出现d3.select
,在d3_node_2
的地方出现d3.min
。
我该如何解决?
答案 0 :(得分:1)
您可能必须使用rollup-plugin-node-resolve才能使用来自node_modules的第三方模块
答案 1 :(得分:0)
将'module'
添加到mainFields
似乎可以解决
nodeResolve({
mainFields: [
'module',
'main', 'jsnext'
]
}),