首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >简单的babel.js独立测试无法在Chrome v40中工作,原因是“未定义的不是函数”未填充的函数

简单的babel.js独立测试无法在Chrome v40中工作,原因是“未定义的不是函数”未填充的函数
EN

Stack Overflow用户
提问于 2019-01-07 06:35:14
回答 1查看 490关注 0票数 1

我是babel的新手,只是尝试使用简单的基于浏览器的babel.js单机版,但即使是一个非常简单的"hello world“类型的示例,我也会遇到一些问题。以下是一些在Chrome 70中运行良好的代码,但在Chrome 40中出现"undefined is not a function“的错误:

代码语言:javascript
复制
<script src="https://unpkg.com/@babel/standalone@7.2.5/babel.js"></script>
<script type="text/babel">
async function test() {}  
console.log("done");
</script> 

用于测试此code

上进行测试

下面是从浏览页面截图的堆栈跟踪:

下面是一小段令人不快的代码:

这似乎与this question有关,但我认为单机版应该是“独立的”,不需要任何额外的东西来填充它。在5.7mb的文件大小下,Object.assign不应该是多填充的吗?也许我漏掉了什么?

EN

回答 1

Stack Overflow用户

发布于 2019-01-07 07:42:38

感谢@Keith的评论让我知道我需要单独包含polyfills。下面是babel.js的一个有效的"hello world“:

代码语言:javascript
复制
<script src="https://polyfill.io/v2/polyfill.js?features=default,es5,es6&flags=gated,always"></script>
<script src="https://unpkg.com/@babel/standalone@7.2.5/babel.js"></script>

<script type="text/babel" data-presets="es2015,es2016,es2017,stage-3">
async function test() { return 10; }  
console.log("done");
</script>

编辑:当用我的真实代码测试它时,我得到了"runtimeGenerator not defined“消息,所以这不是一个完整的解决方案。我试着直接从源代码中包含它,它似乎起作用了,但后来我再次得到“未定义的不是一个函数”,所以为了保存我剩下的头发和理智,我离开了计算机。

编辑2:这是我最终需要的:

代码语言:javascript
复制
<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/facebook/regenerator/packages/regenerator-runtime/runtime.js"></script>
<script src="https://polyfill.io/v2/polyfill.js?features=default,es5,es6,Array.prototype.@@iterator,Array.prototype.entries,Array.prototype.find,Array.prototype.findIndex,Array.prototype.copyWithin,Array.prototype.findIndex,Array.prototype.includes,Array.prototype.keys,Array.prototype.values,DOMTokenList.prototype.@@iterator,DocumentFragment,Element.prototype.dataset,EventSource,Function.name,HTMLCanvasElement.prototype.toBlob,HTMLDocument,MutationObserver,NodeList.prototype.@@iterator,IntersectionObserver,IntersectionObserverEntry,NodeList.prototype.@@iterator,Object.entries,Object.values,Promise.prototype.finally,RegExp.prototype.flags,String.fromCodePoint,String.prototype.codePointAt,String.prototype.padEnd,String.prototype.padStart,String.prototype.repeat,Symbol.hasInstance,Symbol.isConcatSpreadable,Symbol.match,Symbol.replace,Symbol.search,Symbol.species,Symbol.split,Symbol.toPrimitive,Symbol.toStringTag,console.exception,fetch,screen.orientation,setImmediate&flags=gated,always"></script>
<script src="https://unpkg.com/@babel/standalone@7.2.5/babel.js"></script>
<script>
  var beforeCode = "YOUR ES6+ CODE";
  var afterCode = Babel.transform(beforeCode, {
    presets: ['es2015','es2016','es2017','stage-3'],
    plugins: ['transform-async-to-generator','transform-regenerator'],
  }).code;
  var script = document.createElement("script");
  script.innerHTML = afterCode;
  document.head.appendChild(script);
</script>

我还需要添加一个polyfill.io不支持的NodeList.forEach polyfill。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54066561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档