2017-05-08 30 views
5

Tại sao tôi tiếp tục gặp lỗi này khi cố gắng chạy máy chủ Node.js/Express của mình?LoạiError: Object.entries không phải là chức năng

Đây có phải là một phần của ES7 mới hơn không? Tôi cần những gì để có thể chạy một ứng dụng bằng các tính năng mới này?

+0

phiên bản nút nào bạn có? – derp

+1

Node v7 rõ ràng: http://node.green/#ES2017-features-Object-static-methods-Object-entries… hoặc bất kỳ polyfills có sẵn rộng rãi nào. Và không, nó không phải là một phần của ES7. – Bergi

+1

Object.entries là một phần của ECMAScript 2018, mà tôi đoán là phiên bản 9 (phiên bản hiện tại là [* ECMA-262 ed 7 *] (http://ecma-international.org/ecma-262/7.0/index.html) hoặc ECMAScript 2016, tiếp theo sẽ là ECMAScript 2017). Tuy nhiên, số ấn bản dường như đã bị loại bỏ trong các phiên bản gần đây nhất, bản nháp mới nhất chỉ là [* ECMAScript 2018 *] (https://tc39.github.io/ecma262/). – RobG

Trả lời

7

Theo http://kangax.github.io/compat-table/es2016plus/ theo các phương pháp tĩnh Object, có vẻ như bạn cần phải kích hoạt sự hài hòa cờ

Vì vậy, chạy nút như thế này

node --harmony script.js 
+0

Không phải "Harmony" được coi là ECMAScript 2015 hay còn gọi là ECMA-262 ed 6? Hoặc hiện nó chỉ là tham khảo các tính năng mới nhất (có thể vẫn còn trong dự thảo)? – RobG

+0

cho rằng Object.entries có vẻ là một tính năng ES2017, cờ hài hòa hiện nay đại diện cho các tính năng gần như hoàn chỉnh nhưng không được coi là ổn định. Xem ở đây: https://nodejs.org/en/docs/es6/ – derp

+3

Có lẽ họ nên xem xét việc tạo cờ giống như '--latest' hoặc tương tự. Một nhân vật ít hơn để loại là tốt. ;-) – RobG

1

bạn có thể sử dụng babel-polyfill cho giải pháp nhanh chóng

npm install babel-polyfill 

import 'babel-polyfill'; 
2

Trên tài liệu mdn, có hướng dẫn rõ ràng về Object.entries và được mô tả những gì cần thực hiện nếu Object.entries không phải là suppo rted trên một phần PolyFill trong cùng một trang.

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; 
    }; 
Các vấn đề liên quan