2014-09-01 14 views
7

Tôi có tệp này (một gói lớn gồm một vài tệp JS) được sử dụng để làm việc với trình duyệt (5.10.0 ) cho đến một vài ngày trước và bây giờ thì không."Lỗi: đường dẫn phải là một chuỗi" (v5.10.0)

Đây là những gì tôi đang chạy:

$ browserify index.js -o dist/out.bundle.js 

Và kết quả là:

Error: path must be a string 
at /usr/local/lib/node_modules/browserify/node_modules/resolve/lib/async.js:15:16 
at process._tickCallback (node.js:419:13) 

Bất cứ ai biết điều gì có thể gây ra điều này? Có cách nào tôi có thể gỡ lỗi này để thử và tìm ra những gì phiền trình duyệt?

Cheers

Trả lời

2

Đáng buồn là các thông báo lỗi không phải là rất hữu ích, nhưng những gì xảy ra là thế này:

Browserify sử dụng các mô-đun resolve để tìm kiếm các tập tin require cuộc gọi nên tải. Bằng cách nào đó thay vì được thông qua một con đường như bình thường, nó có cái gì khác (tức là không phải là một chuỗi).

Điều này về mặt lý thuyết có thể gần như bất cứ điều gì, nhưng tôi đoán đó là undefined hoặc một số giá trị thực sự vô lý như đối tượng hoặc chức năng. Về cơ bản, mọi thứ về mặt lý thuyết có thể được chuyển đến require và dẫn đến rác.

Bạn không nói liệu bạn đã cập nhật các mô-đun chưa, hãy thêm các biến đổi mới hoặc sửa đổi bất kỳ mã nào trong thời gian chờ đợi. Như bạn ngụ ý rằng điều này làm việc với chính xác phiên bản trình duyệt bạn đang sử dụng bây giờ, tôi sẽ đi ra ngoài trên một chi và đoán nó hoặc là một biến đổi misfiring hoặc một sai lầm trong mã của bạn.

Hãy thử tìm kiếm tất cả các cuộc gọi require trong mã mà bạn vừa sửa đổi (kể từ phiên bản tốt được biết gần đây nhất). Nếu bạn sử dụng kiểm soát nguồn (tôi đang đùa ai: Tôi đang nghĩ đến git) điều này sẽ khá tầm thường. Nếu bạn không sử dụng điều khiển nguồn, bạn nên sử dụng kiểm soát nguồn.

Nếu bạn đang tìm kiếm bất kỳ lệnh gọi require mới nào vượt qua một chuỗi khác với một chuỗi đến require (ví dụ: nhiều đối số hoặc thậm chí biến số), bạn có thể đã tìm thấy thủ phạm của mình.

Nếu cách đó không hiệu quả, hãy xem liệu bạn có bất kỳ biến đổi nào có thể kết thúc trong các cuộc gọi require đang được sửa đổi hay không. Điều này có thể gần như mọi thứ.

Nếu điều đó không làm tốt, hãy thử cập nhật mọi thứ lên phiên bản mới nhất. Bên cạnh đó có thể gây ra vấn đề nếu bạn sử dụng phiên bản thực sự lỗi thời của bất cứ điều gì, nó có thể khắc phục vấn đề của bạn. Thử cập nhật lên bản phát hành phụ mới nhất (cho phiên bản> = 1.0) hoặc bản phát hành lỗi (đối với các phiên bản < 1.0) nếu bạn muốn tránh các sự cố tương thích.

Nếu điều đó vẫn không hữu ích, vui lòng đăng thêm chi tiết và đảm bảo bạn hiểu sự khác biệt chính xác giữa mã đã hoạt động "một vài ngày trước" và mã bạn hiện có.

4

có lẽ có cái gì đó sai trong cấu hình package.json của bạn, đặc biệt là chăm sóc cho các dòng chuyển đổi! ~

"browserify": { 
    "transform": [ 
     [ 
      "reactify", { 
       "harmony": "true" 
      } 
     ] 
    ] 
    } 
+0

Bạn đã đúng! Tks –

0

Bạn có thể đã quên để cài đặt chuyển đổi gói với NPM. Ví dụ nếu bạn đang sử dụng chuyển đổi babelify với trình duyệt, bạn có thể quên cài đặt babelify.

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