2012-11-12 32 views
146

Một ứng dụng nút đã yêu cầu tôi để chạy nút với một lá cờ hòa hợp, như:Nút `--harmony` làm gì?

node --harmony app.js 

cờ hòa hợp này là gì? Nó làm gì và tại sao ứng dụng không thể chạy mà không có nó?

Tôi đã thử xem xét các tùy chọn dòng lệnh nút (node --help), nhưng cũng không cung cấp bất kỳ chi tiết nào. Tài liệu nút cũng không có bất kỳ trợ giúp nào.

Trả lời

109

man node có này trên lá cờ hòa:

--harmony_typeof (enable harmony semantics for typeof) 
     type: bool default: false 
--harmony_scoping (enable harmony block scoping) 
     type: bool default: false 
--harmony_modules (enable harmony modules (implies block scoping))  
     type: bool default: false 
--harmony_proxies (enable harmony proxies)  
     type: bool default: false 
--harmony_collections (enable harmony collections (sets, maps, andweak maps)) 
     type: bool default: false 
--harmony (enable all harmony features (except typeof)) 
     type: bool default: false 

Vì vậy --harmony là một phím tắt để cho phép tất cả các nét hài hòa (ví dụ --harmony_scoping, --harmony_proxies , vv) Từ this blog post, có vẻ như sự hài hòa cho phép các tính năng ECMAScript 6 mới trong ngôn ngữ. Lý do tệp của bạn sẽ không chạy mà không có sự hài hòa là vì app.js có thể đang sử dụng các tính năng tương thích không tương thích từ tiêu chuẩn ECMAScript 6 mới (như phạm vi khối, proxy, bộ, bản đồ, v.v.)

+43

điều đáng nói là [Harmony là tên được sử dụng cho ECMAscript mới] (https://mail.mozilla.org/pipermail/es-discuss/2008-August/006837.html). Không gian tên Harmony chứa các tính năng [đề xuất cho ngôn ngữ đó] (http://wiki.ecmascript.org/doku.php?id=harmony:harmony). – eis

+0

Cảm ơn rất nhiều! Điều này thật ý nghĩa ngay lúc này. Btw. bất kỳ ý tưởng nào tương đương với 'nút người đàn ông' trong Windows? :) – jsalonen

+3

@jsalonen không có một, nhưng bạn có thể làm '> nút --v8-options' để có được những thứ được giới thiệu ở đây – eis

0

Như đã đề cập trong Nút Tài liệu, cờ --harmony cho phép các tính năng không ổn định nhưng sớm được kích hoạt của ES6

Hành vi hiện tại của cờ --harmony trên Node.js là chỉ bật các tính năng được dàn dựng. Sau khi tất cả, nó bây giờ là một từ đồng nghĩa của --es_staging. Như đã đề cập ở trên, đây là những tính năng hoàn chỉnh chưa được xem là ổn định. Nếu bạn muốn chơi an toàn, đặc biệt là trên môi trường sản xuất, hãy xem xét xóa cờ chạy này cho đến khi nó được mặc định chạy trên V8 và do đó, trên Node.js. Nếu bạn tiếp tục kích hoạt tính năng này, bạn nên chuẩn bị để nâng cấp thêm Node.js để phá vỡ mã của bạn nếu V8 thay đổi ngữ nghĩa của mình để tuân thủ chặt chẽ hơn tiêu chuẩn.

0

Nếu bạn muốn chạy các tính năng ECMAScript 6 trong phiên bản cũ hơn của nút, bạn có thể sử dụng cờ --harmony. Phiên bản mới nhất của nút hỗ trợ ES6 nên không cần --harmony flag

Các vấn đề liên quan