2017-05-08 59 views
5

Node.js/Express sunucumu çalıştırmaya çalışırken neden bu hatayı alıyorum?TypeError: Object.entries bir işlev değil

Bu daha yeni ES7'nin bir parçası mı? Bu yeni özellikleri kullanarak bir uygulamayı çalıştırabilmek için neye ihtiyacım var?

+0

Düğümün hangi sürümü var? Görünüşe göre – derp

+1

Node v7: http://node.green/#ES2017-features-Object-static-methods-Object-entries… veya yaygın olarak kullanılabilen çoklu dolgular. Ve hayır, bu ES7'nin bir parçası değil. – Bergi

+1

Object.entries, 9'uncu olduğunu tahmin ettiğim ECMAScript 2018'in bir parçasıdır (şu anki sürüm: [* ECMA-262 ed 7 *] (http://ecma-international.org/ecma-262/7.0/index.html) veya ECMAScript 2016, bir sonraki ECMAScript 2017 olacak). Bununla birlikte, sürüm numarası en son sürümlerde bırakılmış gibi görünüyor, en son taslak sadece [* ECMAScript 2018 *] (https://tc39.github.io/ecma262/). – RobG

cevap

7

Nesne statik yöntemlere altında http://kangax.github.io/compat-table/es2016plus/ göre, size hızlı bir çözüm için babel-polyfill kullanabilirsiniz uyum flag bu

node --harmony script.js 
+0

"Harmony" ECMAScript 2015 aka ECMA-262 ed 6 mıydı? Yoksa şimdi sadece en son (belki hala taslakta) özelliklere mi atıfta bulunuyor? – RobG

+0

, Object.entries'in bir ES2017 özelliği olarak göründüğünden, armoni bayrağı artık neredeyse tamamlanmış ancak kararlı kabul edilmeyen özellikleri temsil ediyor. Buraya bakınız: https://nodejs.org/en/docs/es6/ – derp

+3

Belki de bayrağı - - ya da benzeri - gibi bir şey yapmayı düşünmelidirler. Yazmak için bir tane daha az karakter. ;-) – RobG

1

gibi

Yani çalışma düğümü etkinleştirmeniz gerekir görünüyor

npm install babel-polyfill 

import 'babel-polyfill'; 
2

mdn belgelerinde, Object.entries üzerinde açık bir öğretici vardır ve Object.entries suppo değilse ne yapılması gerektiği anlatılmaktadır. PolyFill numaralı sayfada aynı sayfada rted edilmiştir.

To add compatible Object.entries support in older environments that do not natively support it, you can find a demonstrational implementation of Object.entries in the tc39/proposal-object-values-entries (if you don't need any support for IE), a polyfill in the es-shims/Object.entries repositories, or you can use the simple, ready to deploy polyfill listed below.

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; 
    }; 
İlgili konular