Babel版本:7.6.0
我正在研究供浏览器使用的a JavaScript widget,但是它取决于为NodeJS(edtf.js)构建的库。特别是,它扩展了Date
中内置的this file。
到目前为止,它似乎可以在我测试过的所有现代浏览器上使用。但是为了确保它对较旧版本而言是防弹的,我想到了对edtf库进行Babel化。这是my Gruntfile.js中的browserify配置:
browserify: { development: { src: [ "node_modules/edtf/index.js" ], dest: './dist/js/edtf.js', options: { browserifyOptions: { standalone: 'edtf' }, transform: [["babelify", { "presets": ["@babel/preset-env"], "plugins": [["@babel/transform-runtime", {"helpers": false}]] }]] } } },
经过大量的修改,当页面上加载了最终的javascript文件时,此配置至少不会触发任何错误,但是一旦我开始使用该库,它就会因该错误而中断:
,according to their documentation,并建议使用transform-builtin-extend插件,该插件两年来一直没有维护,仅适合Babel6。] >edtf.js:3040 Uncaught TypeError: this is not a Date object. at Date.getUTCFullYear (<anonymous>) at Date.get (edtf.js:3040) at Date.toEDTF (edtf.js:2960) at Date.value (edtf.js:5696) at new Date (<anonymous>)
[A previous SO answer正确指出Babel仅部分支持内置子类
transform classes不能为此工作吗?我尝试将其包含在我的配置中,但它完全没有改变。
[无论如何,如果有人对如何前进here is the github branch to try it for yourself有任何建议,只需运行npm install
,npm run build
并在浏览器中打开index.html
文件。任何建议都值得欢迎:我不喜欢Babel的想法,但是我想确保我可以安全地使用此edtf库,并使它在大多数浏览器上都可以使用。
Babel版本:7.6.0。我正在开发一个供浏览器使用的JavaScript小部件,但是它依赖于为NodeJS构建的库(edtf.js)。特别是,它扩展了此文件中内置的Date。所以...
基本问题是,您[[不能
仅使用ES5和更早的功能来子类化Date
。它根本不起作用(例如Error
和Array
)。