'Symbol' is undefined in IE after using babel

匿名 (未验证) 提交于 2019-12-03 01:23:02

问题:

I have a reactjs app written using ES6 standards, and I use webpack to build it. The webpack loads the js modules using babel-loader. To be specific, I use the following versions of packages: ├―― babel@5.8.34 ├―― babel-core@5.8.34 ├―― babel-loader@5.4.0 └―― webpack@1.12.6

However, after building it, the IE 10 gives the following error 'Symbol' is undefined. Shouldn't the babel be supposed to define the Symbol? Is there any specific configuration for webpack or babel I need to set in order to make it work? I use {stage: 0} configuration in my .babelrc.

Any help would be appreciated, Thank you !

回答1:

You can require polyfill in the entry point to your code so it will get bundled up with the rest of JavaScript.

One option is to use:

require('babel-polyfill'); 

Or:

import 'babel-polyfill'; 

All of that is explained in the documentation.



回答2:

Ok, I eventually found out that babel alone does no polyfill. Including script solved this issue for me.



回答3:

in documentation about Runtime

// in bash npm install babel-transform-runtime --save-dev  // in gulpfile .pipe(babel({   plugins: ['transform-runtime'] })) 

edit: better yet on heroku in prod mode use --save instead of --save-dev



回答4:

OK, I had the same issue, but in my case that was quite different, so basically you need to include script in the index file as below:

But in my case, I already included that, after some investigation I found out which my proxy block the script...

So make sure you include it in index.html and also make sure which you have access to the script from where you need it to avoid the error happening...

But now which we get to this point, it's not talking about Symbol itself, what's Symbol which can not be recognised in IE?

The Symbol() function returns a value of type symbol, has static properties that expose several members of built-in objects, has static methods that expose the global symbol registry, and resembles a built-in object class but is incomplete as a constructor because it does not support the syntax "new Symbol()".

Every symbol value returned from Symbol() is unique. A symbol value may be used as an identifier for object properties; this is the data type's only purpose. Some further explanation about purpose and usage can be found in the glossary entry for Symbol.

The data type symbol is a primitive data type.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!