我正在使用 Browserify 来转换我的JS代码,以确保最终代码与大多数浏览器兼容,并且所有代码都与 Chrome 和完美配合火狐
但我正在使用 IE11 似乎不喜欢的软件包(dot-prop
),因为get
中get(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(...)
的转换组件。
我错过了什么吗?
如果问题是真的,可以用这样的组件修复吗?
或者我应该自己修复代码,如果是,那么最好的方法是什么?
答案 0 :(得分:1)
问题更加微妙:由于dot-prop
是node_modules
中存储的依赖关系,默认情况下会被 Browserify 忽略,因此不会传递给 Babel 通过 Babelify 进行转换。
直到我找到一种干净的方式让Browerify只处理这种依赖关系我找到了一个简单的解决方法:预生成依赖项的转换版本。
我的package.json
:
"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");
希望它会帮助别人。 : - )