web-dev-qa-db-fra.com

TypeError: Object.entries n'est pas une fonction

Pourquoi est-ce que j'obtiens cette erreur en essayant d'exécuter mon serveur Node.js/Express?

Cela fait-il partie du nouveau ES7? De quoi ai-je besoin pour pouvoir exécuter une application à l'aide de ces nouvelles fonctionnalités?

15
user7917402

Selon http://kangax.github.io/compat-table/es2016plus/ sous les méthodes statiques d'objet, il semble que vous devez activer le drapeau d'harmonie

Donc, exécutez le nœud comme celui-ci

node --harmony script.js
11
derp

Sur les documents mdn, il y a un tutoriel clair sur Object.entries , et il est décrit ce qu'il faut faire si Object.entries n'est pas pris en charge sur la pièce PolyFill dans la même page .

Pour ajouter une prise en charge Object.entries compatible dans des environnements plus anciens qui ne la prennent pas en charge de manière native, vous pouvez trouver une implémentation démonstrative d'Object.entries dans les entrées tc39/proposition-objet-valeurs-entrées (si vous n'avez pas besoin de prise en charge pour IE) , un polyfill dans les référentiels es-shims/Object.entries, ou vous pouvez utiliser le polyfill simple et prêt à déployer indiqué ci-dessous.

if (!Object.entries)
   Object.entries = function( obj ){
      var ownProps = Object.keys( obj ),
         i = ownProps.length,
         resArray = new Array(i); // preallocate the Array

      while (i--)
         resArray[i] = [ownProps[i], obj[ownProps[i]]];
      return resArray;
   };
9
peja

vous pourriez utiliser babel-polyfill pour une solution rapide

npm install babel-polyfill

import 'babel-polyfill';
4
deepak prakash

Au cas où cela aiderait quelqu'un d'autre ...

Mettez à jour votre version de Node. J'exécutais le nœud 6.x et ce problème s'est résolu après la mise à jour vers le nœud 8.x +

2
Snekse