Javascript 使用commonjs的汇总插件,但仍然得到';未定义require';加载模块时

Javascript 使用commonjs的汇总插件,但仍然得到';未定义require';加载模块时,javascript,ecmascript-6,svelte,rollup,Javascript,Ecmascript 6,Svelte,Rollup,我正在为使用Twilio视频SDK的应用程序使用rollup和Svelte。我已经加载了resolve和commonjs的汇总插件 我正在加载带有汇总的SDK,并运行: import Video from "twilio-video"; 但是,在运行npm run build(没有错误)之后,在运行时我得到: 未捕获引用错误:未定义require 此错误发生在node\u modules/twilio video/es5/util/insightspublisher/ind

我正在为使用Twilio视频SDK的应用程序使用rollup和Svelte。我已经加载了
resolve
commonjs
的汇总插件

我正在加载带有汇总的SDK,并运行:

import Video from "twilio-video";
但是,在运行
npm run build
(没有错误)之后,在运行时我得到:

未捕获引用错误:未定义require

此错误发生在
node\u modules/twilio video/es5/util/insightspublisher/index.js
-ie,
twilio video
本身正在使用
require()

如何解决此问题?

我尝试了
dynamicrequiretaregets
选项:

但仍然会得到相同的错误

下面是完整的
rollup.config.js

从“汇总插件svelte”导入svelte;
从“@rollup/plugin node resolve”导入解析;
从“@rollup/plugin commonjs”导入commonjs;
从“汇总插件livereload”导入livereload;
从'rollup plugin terser'导入{terser};
从“@rollup/plugin json”导入json;
从“svelte预处理”导入sveltePreprocess;
从“@rollup/plugin typescript”导入typescript;
从“汇总插件节点多边形填充”导入节点多边形填充;
常数生产=!process.env.ROLLUP\u WATCH;
函数serve(){
让服务器;
函数toExit(){
if(server)server.kill(0);
}
返回{
writeBundle(){
如果(服务器)返回;
server=require('child_process')。spawn('npm',['run','start','--','--','--dev']{
stdio:['ignore','inherit','inherit'],
壳牌:是的
});
过程。关于('SIGTERM',toExit);
进程。在('exit',toExit');
}
};
}
导出默认值{
输入:“src/main.ts”,
输出:{
sourcemap:true,
格式:“iLife”,
名称:“应用程序”,
文件:“public/build/bundle.js”
},
插件:[
nodePolyfills(),
json(),
苗条的({
//不在生产环境中时启用运行时检查
戴夫:制作,
//我们将把任何组件提取到CSS中
//一个单独的文件-性能更好
css:css=>{
write('bundle.css');
},
预处理:SvelteProcess(),
}),
//如果从安装了外部依赖项
//npm,您很可能需要这些插件
//在某些情况下,您需要额外的配置-
//有关详细信息,请参阅文档:
// https://github.com/rollup/plugins/tree/master/packages/commonjs
决心({
浏览器:是的,
重复数据消除:['svelte']
}),
commonjs(),
类型脚本({sourceMap:!production}),
//在开发模式下,调用一次“npm run start”
//包已生成
!生产和服务(),
//查看“public”目录并刷新
//非生产状态下的更改浏览器
!production&&livereload('public'),
//如果我们是为生产而构建(npm运行构建
//而不是npm运行开发),缩小
生产和精简(&terser)
],
观察:{
透明屏幕:错误
}
};

对我来说,这听起来不像是dynamicCrequiteTagets的问题<如果模块被标识为ESM,则代码>要求将被忽略,因为它还包含导入或导出。会是这样吗?然后你应该做两件事:告诉他们应该修复他们的模块格式,并暂时尝试TransformMixedSmodules选项。另外,尝试将commonjs插件移动到配置的顶部。在传递给commonjs插件之前,可能是另一个插件弄乱了模块格式。如果这能奏效,它将是首选方案。
  commonjs({
    dynamicRequireTargets: [
      // include using a glob pattern (either a string or an array of strings)
      'node_modules/twilio-video/*.js',
    ]
  }),