【问题标题】:Error "SCRIPT 1028 Expected identifier, string or number" with IE11IE11 出现错误“SCRIPT 1028 Expected identifier, string or number”
【发布时间】:2017-06-22 07:08:34
【问题描述】:

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

但我正在使用 IE11 似乎不喜欢的包 (dot-prop),因为 get(obj, path, value) (https://github.com/sindresorhus/dot-prop/blob/master/index.js) 中的 get 和生成经典错误:

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(...) 之类的东西。

我错过了什么吗?

如果问题确实存在,是否可以使用这样的组件来解决?

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

【问题讨论】:

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


    【解决方案1】:

    问题更加微妙:因为dot-prop 是默认存储在node_modules 中的依赖项,它被 Browserify 忽略,因此不会传递给 Babel 通过 Babelify 进行转译。

    在我找到一种要求 Browerify 仅处理此依赖项的干净方法之前,我找到了一个简单的解决方法:预先生成依赖项的转译版本。

    我的package.json 中有一个专用的 NPM 脚本:

    "scripts": {
        "precompile": "babel node_modules/dot-prop/index.js --out-file precompiled/dot-prop.js",
    

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

    例如在someModule.js:

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

    希望它能对其他人有所帮助。 :-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 2015-11-20
      • 2020-04-14
      相关资源
      最近更新 更多