polyfill plugin isomorphic es6promise es6 javascript phantomjs karma-runner es6-promise karma-mocha

javascript - plugin - Karma, PhantomJS y es6 Promises



npm fetch (5)

Este thread debería ayudarte. De acuerdo con esto, parece que deberías tratar de usar PhantomJS2 con ES6. También puedes echarle un vistazo a this proyecto, que trata a un tema cercano al tuyo.

Espero que te pueda ayudar

Estoy escribiendo una biblioteca de JavaScript que utiliza las nuevas promesas es6. Puedo probar la biblioteca en Firefox porque las promesas están definidas. Sin embargo, cuando trato de probar mi código con Karma y PhantomJS, aparece el error Can''t find variable: Promise. . Supongo que esto se debe a que el navegador PhantomJS aún no es compatible con las promesas de es6.

¿Cómo puedo configurar Karma para que entregue el polyfill a cambio de promesas?


Para Babel 6, necesitamos instalar babel-polyfill para cumplir la promesa.

npm install --save-dev babel-polyfill

y agrega una línea en karma.conf.js dentro de la sección de files

files: [ ''node_modules/babel-polyfill/dist/polyfill.js'', .... ]

Está bien documentado en https://github.com/babel/karma-babel-preprocessor#polyfill


Puede instalar el relleno de Babel simplemente instalando Babel Polyfill :

npm install --save-dev babel-polyfill

y luego incluya el archivo polyfill antes de su fuente y pruebe los archivos dentro de la sección de files de su karma.conf.js :

files: [ ''node_modules/babel-polyfill/dist/polyfill.js'', ''index.js'', //could be /src/**/*.js ''index.spec.js'' //could be /test/**/*.spec.js ],

A menos que sepa que todos sus navegadores objetivo son compatibles con Promises, es probable que desee aplicar este polifilina también a su versión editada.

Si te sientes realmente aventurero, puedes utilizar Browserify para extraer archivos y hacer que tus pruebas sean más modulares, y luego usar Babelify para transpilar ES6 a ES5. He creado un proyecto de ejemplo con estos y una prueba de trabajo que implica un Promise (ejecutándose en PhantomJS2) como referencia .


Puede usar karma-babel-preprocessor para archivos que usan las características de ES6. Instalarlo con

npm install --save-dev karma-babel-preprocessor

y luego agregar especificar qué archivos deben preprocesarse usted karma.conf :

preprocessors: { "src/**/*.js": ["babel"], "test/**/*.js": ["babel"] },


como correctamente señaló el autor, no puede reconocer la promesa es6. Para cargarlo, el módulo es6-promise se puede cargar con la ayuda de webpack.ProvidePlugin y configurándolo dentro de los plugins array of webpack.

plugins: [ new webpack.ProvidePlugin({ ''Promise'': ''es6-promise'' }) ]

¡Esto parece funcionar para mí!