Cucumber.js được cung cấp một dòng lệnh "nhị phân" mà là một .js
tập tin đơn giản có chứa một công việc hướng dẫn:NPM gói 'bin' kịch bản cho Windows
#!/usr/bin/env node
var Cucumber = require('../lib/cucumber');
// ...
Các nhị phân được quy định tại package.json
với phím cấu hình "bin"
:
{ "name" : "cucumber"
, "description" : "The official JavaScript implementation of Cucumber."
// ...
, "bin": { "cucumber.js": "./bin/cucumber.js" }
// ...
Tất cả đều hoạt động tốt trên hệ thống POSIX. Ai đó đã báo cáo an issue khi chạy Cucumber.js trên Windows.
Về cơ bản, tệp .js
dường như được thực hiện thông qua trình thông dịch JScript của Windows (không phải Node.js) và nó ném lỗi cú pháp do lệnh shebang.
Câu hỏi của tôi là: cách được khuyến nghị để thiết lập tập lệnh "nhị phân" hoạt động trên cả hệ thống UNIX và Windows là gì?
Cảm ơn.
Sự cố là tên tập lệnh nhị phân kết thúc bằng hậu tố ".js". NPM tạo cả tệp nhị phân 'cucumber.js' và' cucumber.js.cmd' thân thiện với cửa sổ dựa trên hướng dẫn cấu hình "bin". Vì cách Windows xử lý các tệp "các phần mở rộng", khi một tệp đã gõ 'node_modules \ .bin \ cucumber.js', nó đang chạy tệp' .js' thông qua JScript thay vì tệp '.cmd'. Cảm ơn bạn đã viết bản ghi chú;) – jbpros
Tôi đã gặp phải vấn đề tương tự. Tôi đang cố gắng tìm một giải pháp không yêu cầu tôi nói cho người dùng Windows gõ một lệnh khác. Các tệp JavaScript làm trống trước tệp .cmd được tạo bởi npm được thực thi trong Windows Script Host; Tôi hy vọng có một cách để tận dụng điều đó để ủy quyền cho CLI do nút hỗ trợ: http: // stackoverflow.com/questions/24113091/tương đương-of-unix-exec-in-jscript-windows-script-host – ELLIOTTCABLE
làm thế nào để tôi thực hiện nó bởi nodejs thay vì microsoft jscript? thậm chí thay đổi nó thành 'node./index.js' không làm cho nó hoạt động. chỉnh sửa: tái thực hiện 'npm link' dường như làm việc –