Object.assign не является функцией
Я использую babel с gulp и создаю простую библиотеку DOM в ES6. Но после запуска, и когда я его буду использовать, я получил консоль Object.assign is not a function
в хром.
это код gulp
gulp.task('scripts', function() {
return gulp.src(src + 'js/*.js')
.pipe(babel())
.pipe(concat('main.js'))
.pipe(gulp.dest(dest + 'js'));
});
это файл класса
class DOM {
constructor( selector ) {
var elements = document.querySelectorAll(selector);
this.length = elements.length;
Object.assign(this, elements);
}
...
}
const dom = selector => new DOM(selector);
и я использую его на стороне клиента, например dom('#elId');
Ответы
Ответ 1
Как я подозреваю, вы уже знаете, Google Chrome использует V8, который поддерживает ECMAScript 5th edition. Object.assign
представлен в 6-м выпуске ECMAScript.
Чтобы использовать эти дополнения, вам нужно включить ES6 polyfill, предоставленный Babel:
Это будет эмулировать полную среду ES6. [...]
Доступно из файла browser-polyfill.js
в версии babel-core
npm. Это должно быть включено до всего вашего скомпилированного кода Babel. Вы можете либо добавить его к скомпилированному коду, либо включить его в <script>
до него.
Ответ 2
$ npm install babel-core --save-dev
- Импортировать модуль
polyfill
в js:
import 'babel-core/polyfill';
- Используйте babel для компиляции вашего кода!