Babel версия: 7.6.0
Я работаю над виджетом JavaScript , предназначенным для использования браузером, но это зависит от библиотеки, созданной для NodeJS ( edtf.js ). В частности, он расширяет встроенный в этот файл *1008* этот файл .
Пока что он работает во всех современных браузерах, с которыми я его тестировал. Но чтобы убедиться, что он пуленепробиваемый для старых, я подумал о Babelification библиотеки edtf. Вот конфигурация browserify из my Gruntfile.js :
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 загружается встраницы, но как только я начинаю использовать библиотеку, она выходит из строя с этой ошибкой:
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 предыдущий ответ SO правильно указывает на то, что встроенные подклассы поддерживаются только частичноBabel , согласно их документации , и предлагает использовать плагин transform-builtin-extend , который, к сожалению, не поддерживается в течение 2 лет и подходит только для Babel 6.
Разве классы преобразования не должны работать для этого? Я попытался включить его в свой конфиг, но он ничего не изменил.
В любом случае, если у кого-нибудь есть какие-либо советы о том, как двигаться вперед, , вот ветка github, чтобы попробовать это для себя ,просто запустите npm install
, npm run build
и откройте файл index.html
в вашем браузере. Любая рекомендация приветствуется: я не женат на идее Babel, но хочу убедиться, что могу безопасно использовать эту библиотеку edtf и работать с ней в большинстве браузеров.