Обновление: Оказалось, что это проблема не с Babel, а с Rollup, который запускался раньше. В любом случае спасибо за вашу помощь и извините за шум.
Я использую rollup для объединения ряда модулей, включая полифилл Promise (намеренно перезаписывая глобальное обещание) . Однако свертка распознает Promise
как глобальное имя и преобразует
export default function Promise(fn) { ... }
...
global.Promise = Promise;
to
function Promise$1(fn) { ... }
...
global.Promise = Promise$1;
Полученный код работает, но мне хотелось бы, чтобы выполнялось следующее утверждение:
expect(Promise.name).to.equal('Promise');
Есть ли способ указать свертке, чтобы имя конструктора оставалось неизменным?
constructor.name
в JS. Имя также учитывается средством форматирования, используемым в консоли Node.js (пример). - person ralfstx   schedule 08.08.2017.constructor.name
не должна использоваться именно по этой причине. Имена искажаются транспайлерами, сборщиками и минификаторами. Старые браузеры их вообще не реализуют. Вместо этого используйтеinstanceof
,typeof
или определение формы (наличие и тип свойств). Отладка и ведение журнала - это отдельная тема, которая обычно выполняется в известных средах и с исходным исходным кодом. - person Bergi   schedule 08.08.2017constructor
иconstructor.name
являются частью спецификации ES 2015, поэтому я не могу последовать вашему совету, чтобы избежать их. - person ralfstx   schedule 08.08.2017name
может быть частью ES6, но это не значит, что он совместим с Интернетом. IE его вообще не поддерживает, поэтому я рекомендую избегать этого. В вашем окружении вроде бы нормально. - person Bergi   schedule 08.08.2017