2015-11-24 21 views
5

Tôi đang cố gắng tạo máy chủ kết xuất trước cho ứng dụng ember của mình.Xong trước khi kết xuất: Loại lỗi: 'không xác định' không phải là hàm (đánh giá 'u.bind (e)')

Tôi đã cài đặt ember-prerender (https://github.com/zipfworks/ember-prerender), sử dụng trình khởi tạo được cung cấp trong/ví dụ, triển khai nó trên một trong các máy chủ của tôi.

Nhưng khi tôi cố gắng để khởi động nó:

[Renderer 0] Engine starting up (phantom) 
[Renderer 0] Restarting rendering engine in 25000 seconds after it failed 
      with error: Phantom encountered an error: TypeError: 
      'undefined' is not a function (evaluating 'u.bind(e)') 

tôi không chắc chắn nơi để xem xét. Tôi cố gắng:

  • Xóa tất cả SDK của bên thứ ba (Facebook, Google Analytics)
  • Logging các phần khác nhau của mã (sự kiện XContentReady dường như bị sa thải)
  • ra mắt với động cơ jsdom thay vì phantom (cung cấp cho: [Renderer 0] Restarting renderer, timed out while initializing)
  • Đang cố gắng trong sản xuất

tôi không biết nơi quá nhìn vào bây giờ. Phần tồi tệ hơn là tôi đã có nó làm việc một vài ngày trước (xem: Ember pre-render: timed out while initializing)

EDIT:

Tôi không nghĩ rằng vấn đề có liên quan gì với mã này, kể từ khi tôi đã làm một hard reset cho một phiên bản đã từng hoạt động.

  • Có thể một số phiên bản đã thay đổi (bower, npm, phantom)? Tôi đã cố gắng cập nhật bower lên 1.6, không thành công.
  • Có lẽ tôi có phụ thuộc mới gây ra sự cố? Tôi không biết chính xác như thế nào mặc dù

EDIT2: Tôi bắt đầu tươi trên một máy chủ mới, bây giờ tôi nhận Phantom đâm với thông báo lỗi này:

[Renderer 0] Restarting rendering engine in 25000 seconds 
after it failed with error: Erroneous exit code: null SIGSEGV 

Nếu tôi sử dụng JSDOM tôi vẫn nhận được Restarting renderer, timed out while initializing

CHỈNH SỬA 3: Tôi đã cố gắng bao gồm một polyfill trong ứng dụng của mình. Sử dụng:

  • github.com/es-shims/es5-shim
  • sau đó là một addon: github.com/pixelhandler/ember-cli-es5-shim

Với không thành công

CHỈNH SỬA 4: Tôi gặp lỗi tương tự với một dự án hoàn toàn mới, chỉ chứa quảng cáo hiển thị hình ảnh ember, vì vậy tôi nghĩ nó được liên kết với công cụ cụ thể của tôi (version: 1.13.13, node: 0.12.3, npm: 2.14.10, os: linux x64) hoặc gói/cấu hình máy tính của tôi.

+0

"Tôi không nghĩ rằng vấn đề có liên quan gì đến mã" - bạn có thể thử chạy ứng dụng đó trên ứng dụng dọn dẹp mới để xác nhận không? –

+0

Khi bạn nói "ứng dụng ember mới, bạn có nghĩa là điểm cuối" appUrl "phải khác với thời điểm hiện tại không? (' Http: // www.example.com/') hoặc ứng dụng ember đang chạy các pre-render phải là mới (nhưng sau đó tại sao?) – Nicorr

+0

Nếu bạn có thể chạy 'ember new whatever' và kiểm tra nó trên ứng dụng mới đó, sau đó nếu nó hoạt động bạn có thể từng bước thêm mã của bạn từ ứng dụng cha mẹ để thu hẹp vấn đề nếu bạn gặp phải, hoặc hoàn toàn chuyển ứng dụng của bạn và chạy nó mà không gặp vấn đề gì –

Trả lời

1

Tôi không có kinh nghiệm với jsdom, nhưng Function.prototype.bind không được hỗ trợ với [email protected] trở xuống. Bạn đã thử [email protected] chưa?

+0

Vấn đề là phiên bản của Phantom được xác định bởi đầu ghi trước, vì vậy tôi không thay đổi nó ('" phantom ":"^0.7. 2 "," phantomjs ":"> = 1.9 <1.10 "') – Nicorr

+0

Nhưng có lẽ tôi có thể tìm cách để không có 'Function.prototype.bind' được gọi là bất cứ đâu? – Nicorr

+0

Tôi nghĩ Garret có thể đúng, hãy thử bao gồm một polyfill trong ứng dụng Ember.js của bạn như https://github.com/es-shims/es5-shim hoặc như một addon : https://github.com/pixelhandler/ember-cli-es5-shim, và sau đó thử chạy lại. Bạn có thể đọc thêm một chút về điều này ở đây: https://github.com/ember-cli/ember-cli/issues/2634 là một vấn đề tương tự – Piotr

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