Javascript 如何使用fetch polyfill、rollup和typescript创建umd包?
我正试着把一个图书馆和汇总捆绑在一起 在这个库中,我发出http请求。 我想使用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”, 全球:{ 获取:'交叉
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():{},//将在生产模式下缩小文件
],
},