Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用fetch polyfill、rollup和typescript创建umd包?_Javascript_Typescript_Rollup - Fatal编程技术网

Javascript 如何使用fetch polyfill、rollup和typescript创建umd包?

Javascript 如何使用fetch polyfill、rollup和typescript创建umd包?,javascript,typescript,rollup,Javascript,Typescript,Rollup,我正试着把一个图书馆和汇总捆绑在一起 在这个库中,我发出http请求。 我想使用fetch并在节点上运行代码时使用polyfill。 我无法获得正确的配置。 它可以在节点上工作,但不能在浏览器中工作,或者相反 以下是我的配置文件的外观: module.exports=[{ 输入:“src/mylibrary.ts”, 输出:{ 姓名:LIB_姓名, 文件:getOutputFileName( 解析(根,pkg.browser), 环境==“生产” ), 格式:“umd”, 全球:{ 获取:'交叉

我正试着把一个图书馆和汇总捆绑在一起

在这个库中,我发出http请求。 我想使用
fetch
并在节点上运行代码时使用polyfill。 我无法获得正确的配置。 它可以在节点上工作,但不能在浏览器中工作,或者相反

以下是我的配置文件的外观:

module.exports=[{
输入:“src/mylibrary.ts”,
输出:{
姓名:LIB_姓名,
文件:getOutputFileName(
解析(根,pkg.browser),
环境==“生产”
),
格式:“umd”,
全球:{
获取:'交叉获取',
},
},
插件:[
打字稿({
UseTConfigDeclarationDir:true,
tsconfigOverride:{
allowJs:false,
包括:['src'],
排除:['tests','examples','*.js','scripts'],
esModuleInterop:正确,
},
}),
nodeResolve({
main字段:['jsnext','main'],
首选内置:正确,
浏览器:是的,
}),
普通的({
包括:['node_modules/**',
}),
json(),
env=='production'?terser():{},//将在生产模式下缩小文件
],
}]
这是我在代码中导入fetch的方法:

导入“交叉提取/多边形填充”
在浏览器中,它工作得很好✅

在node中,我有以下错误❌:

抛出新错误(“无法定位全局对象”);
^
错误:无法定位全局对象
当我查看捆绑的umd时,它来自这里:

var getGlobal=function(){
//获取全局对象的唯一可靠方法是
//`Function('returnthis')()`
//然而,这会导致Chrome应用程序违反CSP。
if(typeof self!=='undefined'){return self;}
if(typeof window!=='undefined'){return window;}
if(typeof global!=='undefined'){return global;}
抛出新错误('无法定位全局对象');
};

知道可能是什么问题吗?

我忘了在
外部
键(第2行)中添加
交叉提取

以下示例适用于我:

{
输入:'src/meilisearch.ts',//要转换类型脚本的目录
外部:['cross-fetch','cross-fetch/polyfill'],
输出:{
姓名:LIB_姓名,
文件:getOutputFileName(
//如果在生产环境中,将在文件名中添加.min
解析(根,pkg.browser),
环境==“生产”
),
格式:“umd”,
sourcemap:env==='production',//在生产模式下创建用于错误报告的sourcemap
},
插件:[
打字稿({
UseTConfigDeclarationDir:true,
tsconfigOverride:{
allowJs:false,
包括:['src'],
排除:['tests','examples','*.js','scripts'],
esModuleInterop:正确,
},
}),
巴别塔({
巴别塔:错,
扩展名:['.ts'],
预设:[
[
“@babel/preset env”,
{
模块:错误,
目标:{
浏览器:['last 2 versions','ie>=11'],
},
},
],
],
}),
nodeResolve({
main字段:['jsnext','main'],
首选内置:正确,
浏览器:是的,
}),
普通的({
包括:['node_modules/**',
}),
json(),
env=='production'?terser():{},//将在生产模式下缩小文件
],
},