2014-07-01 18 views
15

Tôi vừa cập nhật biểu mẫu [email protected] thành [email protected] trong ứng dụng Ember.js của mình và bây giờ tôi nhận được lỗi thời điểm này không được xác định khi tôi nhập moment() vào giao diện điều khiển hoặc bao gồm nó trong kịch bản của tôi.moment.js moment is undefined

Trên tài liệu tôi thấy "Vì 2.4.0 đối tượng thời điểm được xuất trên toàn cầu không được chấp nhận". mà tôi nghĩ là vấn đề ở đây nhưng tôi không chắc chắn làm thế nào tôi có thể thiết lập thời gian trên toàn cầu trong ember để tất cả các tham chiếu đến thời điểm() trong cơ sở mã của chúng tôi hiện không bị hỏng.

Tôi đã thử cập nhật dòng mà chúng tôi đang yêu cầu ('thời điểm') thành var moment = require ('moment') nhưng nó có cùng kết quả. Ngay cả khi tôi đặt trình gỡ lỗi trực tiếp sau dòng var moment = ... và sau đó nhập moment() vào bảng điều khiển, tôi vẫn nhận được thời điểm đó là không xác định.

+0

Nó phải là cái gì khác, một cái gì đó xung đột với requirejs? Tôi thiết lập một trang vài ngày trước với thời điểm 2.7.0 để thử nghiệm, nghĩa đen chỉ bao gồm '' trong thời điểm gõ bàn điều khiển trả về hàm ref. Bất kỳ lỗi nào được ném trước khi nhập dấu chấm()? Có lẽ hãy kiểm tra Nhật ký mạng để xem nó đang được tải ... – Lex

+0

Bạn đang sử dụng hương vị nào của ember? nếu bạn đang sử dụng một công cụ xây dựng như eak hoặc ember-cli, bạn cần phải kích hoạt 'moment' trong không gian tên chung. bạn đã làm điều đó chưa – Grapho

+0

Tôi truy tìm sự cố xuống trình tải của nút yêu cầu mô-đun không đặt bối cảnh cho thời điểm mong đợi. Nó đặt bối cảnh cho bối cảnh mới {}. Sau đó, nó sẽ kiểm tra nếu biến global được định nghĩa và nếu nó không phải là (không phải trong trường hợp của tôi) thì thời điểm sẽ thiết lập biến thời điểm trên đối tượng "this", được đặt thành context {} thay vì window . Các kết quả trong thời điểm được xác định, nhưng không phải ở cấp độ toàn cầu. Bằng cách thay đổi dòng cuối cùng trong moment.js từ cuộc gọi (this) để gọi (cửa sổ) nó bây giờ hoạt động. – Efarley

Trả lời

11

Bạn muốn phần Browser của Tài liệu mới.

Vậy ...

<script src="moment.js"></script> 
<script> 
    moment().format(); 
</script> 

Sửa

Có nói rằng, có vẻ như điều này có lẽ sẽ cung cấp cho bạn cùng một vấn đề.

Có vẻ như Moment.js đang cố khuyến khích bạn sử dụng trình quản lý gói để không làm bẩn không gian tên với các biến toàn cầu.

Đọc lên trên CommonJSAMD và thử và đặt nó vào ngăn xếp hiện tại của bạn.

Bạn nên làm một cái gì đó như:

var moment = require('moment'); 

moment().format(); 

Nhưng để sử dụng require bạn cần một hệ thống mô-đun như những người nói trên.

Nhưng

Việc sửa chữa rõ ràng là để rollback phiên bản của Moment.js, miễn là bạn không cần chức năng mới. Làm cách nào để cập nhật quan trọng trên thư viện thời gian/ngày thực sự quan trọng?

+0

Tôi cần múi giờ của chúng tôi có một cắt giảm thanh toán lúc 10 giờ tối ET và tôi cần phải xác minh cắt được so sánh với thời gian trên bờ biển phía đông không phải là máy địa phương của người dùng.Đó là một chút lộn xộn hơn để thêm vào tất cả các logic để kiểm tra múi giờ của người dùng và sau đó điều chỉnh ngày/giờ để đi đến bờ biển phía đông khi tôi chỉ có thể sử dụng moment(). Tz ('America/New_York'). Có vẻ như những thay đổi đã được thực hiện cho đến thời điểm này sẽ khiến tôi cập nhật nhiều hơn số lượng công việc khi tự làm logic. – Efarley

+0

sử dụng [Múi giờ thời gian] (http://momentjs.com/timezone/docs/) với [RequireJS] (http://momentjs.com/timezone/docs/) không nên quá khó thực hiện. Nhưng có, có lẽ chỉ cần sử dụng JavaScript [Date Object] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) sẽ dễ dàng hơn nếu bạn không muốn học về các mô-đun. – shennan

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