Javascript Babel单机版:预期IE11';(';

Javascript Babel单机版:预期IE11';(';,javascript,internet-explorer,babeljs,babel-polyfill,Javascript,Internet Explorer,Babeljs,Babel Polyfill,我目前正试图让我的es2017代码在IE11中工作,不幸的是,由于我的项目的性质,我需要在客户端传输代码 我在看一些其他的SO帖子(),这些帖子确实对我有所帮助,但我发现自己在这一点上陷入了困境 我有下面的示例代码,我是从我上面链接的SO问题中提取的,用于测试: <!DOCTYPE html> <html> <head></head> <body> <h1>Standalone Async/Await

我目前正试图让我的es2017代码在IE11中工作,不幸的是,由于我的项目的性质,我需要在客户端传输代码

我在看一些其他的SO帖子(),这些帖子确实对我有所帮助,但我发现自己在这一点上陷入了困境

我有下面的示例代码,我是从我上面链接的SO问题中提取的,用于测试:

<!DOCTYPE html>
<html>
   <head></head>
   <body>
      <h1>Standalone Async/Await Example</h1>
      <!-- Load Babel -->
      <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/7.8.3/polyfill.min.js" type="text/javascript"></script>
      <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
      <script type="text/babel" data-presets="es2017, stage-3" data-plugins="syntax-async-generators">
         /* Output of Babel object */
         console.log('Babel =', Babel);

         var users = { '123' : { name : 'Joe Montana'} };
         process();
         async function process()
         {
            var id = await getId(); 

            var name = await getUserName(id);   
            console.log("User Name: "+name);
         }
         function getId()
         {
            return new Promise((resolve, reject) => {
                setTimeout(() => { console.log('calling'); resolve("123"); }, 2000);
            });
         }
         function getUserName(id)
         {
            return new Promise((resolve, reject) => {
                setTimeout(() => { console.log('requesting user name with id: '+id); resolve(users[id].name); }, 3000);
            });
         }
      </script>
   </body>
</html>
我无法理解为什么在此处引用的行上会出现括号:

var name = await getUserName(id);

有人能在这里给我指出正确的方向吗?我做错了什么?

问题不在于你的
type=“text/babel”
脚本中的代码行,这是一个令人费解的问题,这要感谢IE11在控制台中给你的链接。这是在babel创建的生成脚本中,在这一行:

_process = asyncToGenerator(function* () {
请注意IE不支持的生成器函数(
函数*

Babel之所以输出,是因为示例的
数据预设不完整。该示例具有
数据预设=“es2017,第3阶段”
,但这并没有告诉Babel它需要传输ES2015和ES2016,因此它假设它可以像在ES2015中一样使用生成器函数

若要修复此问题,请将其添加到预设中:
data presets=“es2015、es2016、es2017、stage-3”



我是这样诊断的,以防有用:因为
type=“text/babel”中的代码
脚本在语法上是正确的,我知道不是这样。所以我认为它必须是传输的结果。我可以在IE11的DOM Explorer中看到传输的结果,并注意到其中的
函数*
。所以我知道有传输问题,我认为是那一行,但IE11不允许我复制代码,如果我可以看到的话如果那是第19行,那么我就勇敢地运行它(类似于Chrome),复制了生成的代码,确实是其中的第19行。这让我更加仔细地查看了
数据预设,并意识到发生了什么。

哇,你是最棒的!非常感谢你的回答。你的建议非常有效。但是,我还有一个问题,如果这是非常明显的问题,我提前道歉您是如何看到babel生成的脚本的?我想在排除故障时执行此操作,但不知道如何执行。@WajihQazi-一点也不明显。:-)在IE11的devtools中,转到DOM资源管理器窗格,其中显示DOM的当前状态。如果展开
,您将看到添加的
脚本
。(Babel Standalone将生成的脚本附加到
头部
_process = asyncToGenerator(function* () {