25

package.json của tôi trông như thế này ..Không có nhị phân cho trình duyệt PhantomJS trên nền tảng của bạn. Xin vui lòng, thiết lập "PHANTOMJS_BIN" env biến

"karma-phantomjs-launcher": "^0.1.4", 
"karma-safari-launcher": "^0.1.1", 
"karma-sinon-chai": "~0.2.0", 
"karma-spec-reporter": "~0.0.16", 
"mocha": "~1.20.1" 

phiên bản NPM của tôi là 2.2.0

whay tôi nhận được điều này khi tôi chạy thử nghiệm nghiệp - nghiệp chướng bắt đầu my.conf.js

+3

Thông báo khá rõ ràng: không có cài đặt PhantomJS trên máy của bạn. 'karma-phantomjs-launcher' sẽ tải xuống bản nhị phân của PhantomJS và cài đặt trên máy của bạn nếu có: bởi vì bạn không phải tự cài đặt và sau đó thêm đường dẫn của nó vào biến môi trường bằng cách sử dụng' PHANTOMJS_BIN'. – MarcoL

+1

@MarcoCI Tôi có cùng một vấn đề và thực sự có một hệ nhị phân của các phantomj được cài đặt cùng với 'karma-phantomjs-launcher'. –

+1

@Flek: sau đó xuất đường dẫn của tệp đó như được hiển thị trong câu trả lời bên dưới. – MarcoL

Trả lời

16

Tôi đã có vấn đề này với một phiên bản cũ của nút, quá. Nếu bạn không muốn phải mã hóa cứng biến môi trường này, việc cập nhật phiên bản nút của bạn sẽ giải quyết được vấn đề. Chỉ cần làm (hướng dẫn OSX) sau:

npm uninstall -g phantomjs 
npm cache clean -f 
brew upgrade nodejs 
rm -rf node_modules 
npm install -g YOUR_GLOBAL_DEPENDENCIES 
npm install 

Edit: cập nhật hướng dẫn để đảm bảo không có phantomjs toàn cầu phụ thuộc

+0

Những lệnh này ban đầu dường như gây ra nhiều vấn đề hơn sau đó là giải pháp nhưng cuối cùng tôi đã làm việc thông qua chúng. 'brew upgrade nodejs' không hoạt động đối với tôi, tôi nhận được' Error: node not installed'. Nhưng có vẻ như chỉ unistalling phantomjs, làm sạch bộ nhớ cache npm, và cài đặt lại các gói với npm xóa 'Không nhị phân cho trình duyệt PhantomJS trên nền tảng của bạn. Vui lòng đặt lỗi “PHANTOMJS_BIN” env variable'. Cảm ơn bạn! – Mike

+0

chính xác lý do tại sao tôi không muốn bắt tay vào chúng. tôi hạ xuống nút vật lý để chữa trị một vấn đề khác. không có thời gian cho rằng tonite – blamb

+0

Tôi có thể làm điều này lần đầu tiên, nhưng mỗi khi tôi đóng hệ thống của tôi và khởi động lại ứng dụng, tôi phải làm điều này một lần nữa. Có cách nào để xóa vĩnh viễn lỗi này không? – nakulchawla09

18

Điều này có vẻ là một vấn đề với phiên bản ma trận js và ma thuật js.

https://github.com/karma-runner/karma-phantomjs-launcher/issues/31

Làm thế nào tôi cố định vấn đề của tôi ..

//install 
    npm install -g karma-phantomjs-launcher 

    //temporary path.. set the path 
    export PHANTOMJS_BIN=/usr/local/lib/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/lib/phantom/bin/phantomjs 

    karma start my.conf.js 
10

Tôi chạy vào vấn đề này giống nhau. Cách khắc phục là đặt biến số PHANTOMJS_BIN theo cách thủ công để trỏ đến đường dẫn ảo chính xác. Bằng cách nào đó karma launcher cố gắng nhìn vào con đường sai được thiết lập bởi PHANTOMJS_BIN.

Đây là những gì làm việc cho tôi:

$ echo $PHANTOMJS_BIN 

/usr/local/lib/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/lib/phantom/bin/phantomjs

$ export PHANTOMJS_BIN=/usr/local/lib/node_modules/phantomjs/lib/phantom/bin/phantomjs 

$ grunt test 

tất cả mọi thứ là ok sau đó.

1

có cùng một vấn đề, đã làm tất cả ở trên, không kết quả là vừa xóa thư mục 'karma-phantomjs-launcher' từ global node_modules và dự án cục bộ, gọi là 'npm install' và tất cả đều ổn!

1

Đã xảy ra sự cố như thế này. Những gì tôi đã làm là cài đặt các phantomjs trên toàn cầu npm install -g phantomjs. Sau đó, chuyển đến thư mục mô-đun karma-phantomjs-launcher và mở tệp index.js. Sau đó, tôi đã đi đến các chức năng phantomJSExePath và nhận xét ra các nội dung trước (không chắc chắn nếu nó là an toàn để làm những gì tôi đã làm). Sau đó, tôi đã đặt

return 'C://Users/user/AppData/Roaming/npm/node_modules/phantomjs/lib/phantom/phantomjs.exe'; 

Đã lưu tôi không nhập lại xuất tạm thời.

4

Tôi đã gặp vấn đề này với [email protected], nơi tôi cũng đã cài đặt [email protected]

Chỉ ra rằng các ảo ảnh không được dùng nữa, được thay thế bằng phantomjs-prebuilt.

Gỡ cài đặt cả gói và cài đặt lại phantomjs-dựng sẵn cố định vấn đề với nghiệp-phantomjs-launcher:

npm -g remove phantomjs phantomjs-prebuilt 
npm -g install phantomjs-prebuilt 
2

My karma.conf.js có dòng này: process.env.PHANTOMJS_BIN = 'node_modules/karma-phantomjs-launcher/node_modules/.bin/phantomjs'; ở đầu trang. Tôi mới nhận ra điều đó!Tôi đã nhận xét nó và nó hoạt động

4

Tôi xóa tất cả thư mục node_modules của mình trong Dự án và chạy "npm install". Điều này đã khắc phục được sự cố của tôi.

2

Tôi gặp vấn đề tương tự đôi khi. Tôi có số gruntfile.js và tôi có package.json nơi tôi thêm rõ ràng phantomjs-prebuilt làm phụ thuộc. Nhưng đôi khi máy chủ CI của tôi có thể chạy được grunt karma một cách trơn tru trong khi đôi khi không thể xác nhận quyền sở hữu số No binary for PhantomJS browser on your platform. Please, set “PHANTOMJS_BIN” env variable.

Vì vậy, tôi thêm grunt task để đảm bảo biến số PHANTOMJS_BIN được đặt trước khi chạy thử nghiệm và sau đó giải quyết vấn đề gây phiền nhiễu.

grunt.registerTask('ensurePhantomJsPath', function() { 
    process.env.PHANTOMJS_BIN = './node_modules/phantomjs-prebuilt/bin/phantomjs'; 
    console.log(process.env.PHANTOMJS_BIN); 
}); 

Vì vậy, cuối cùng là Gruntfile.js trông như thế này:

grunt.registerTask('ensurePhantomJsPath', function() { 
    process.env.PHANTOMJS_BIN = './node_modules/phantomjs-prebuilt/bin/phantomjs'; 
    console.log(process.env.PHANTOMJS_BIN); 
}); 

grunt.registerTask('test', ['ensurePhantomJsPath', 'karma']); 
1

Chạy các lệnh dưới đây:

npm remove phantomjs -g 
npm remove phantomjs 
npm install phantomjs 

Khi bạn làm việc cài đặt này:

bạn sẽ nhận được một thông báo như bên dưới:

Linking to global install at /usr/local/lib/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs 

Sao chép con đường này và chạy:

export PHANTOMJS_BIN=/usr/local/lib/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs 

Về cơ bản những gì đang xảy ra là: nghiệp đang cố gắng để chạy trình duyệt nhưng không thể tìm thấy bin của nó. Khi bạn xuất đường dẫn đến đúng đường dẫn, nó sẽ chạy.

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