使用IE11错误“SCRIPT 1028预期标识符,字符串或数字”

时间:2017-06-09 10:11:28

标签: javascript internet-explorer internet-explorer-11 babeljs browserify

我正在使用 Browserify 来转换我的JS代码,以确保最终代码与大多数浏览器兼容,并且所有代码都与 Chrome 完美配合火狐

但我正在使用 IE11 似乎不喜欢的软件包(dot-prop),因为getget(obj, path, value)等某些函数的名称(https://github.com/sindresorhus/dot-prop/blob/master/index.js)并生成经典错误:

SCRIPT 1028 Expected identifier, string or number

然而,我正在使用一大堆转换工具

browserify --extension=.jsx --transform [babelify --presets=es2015,stage-2,react --plugins=[babel-plugin-transform-es3-member-expression-literals,babel-plugin-transform-es3-property-literals]] --transform [es3ify] GUI/index.jsx --outfile dist/GUI/bundle.js

但据我所知,这些工具认为代码是有效的,对大多数浏览器来说确实如此。

我可能错过了一个可能会在get(...)之类的内容中转换"get": function(...)的转换组件。

我错过了什么吗?

如果问题是真的,可以用这样的组件修复吗?

或者我应该自己修复代码,如果是,那么最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

问题更加微妙:由于dot-propnode_modules中存储的依赖关系,默认情况下会被 Browserify 忽略,因此不会传递给 Babel 通过 Babelify 进行转换。

直到我找到一种干净的方式让Browerify只处理这种依赖关系我找到了一个简单的解决方法:预生成依赖项的转换版本

我的package.json

中有一个专用的NPM脚本
"scripts": {
    "precompile": "babel node_modules/dot-prop/index.js --out-file precompiled/dot-prop.js",

我引用生成的已编译模块代替原始模块。

e.g。在someModule.js

const dotProp = require("../precompiled/dot-prop");

希望它会帮助别人。 : - )