Cucumber.js è la fornitura di una linea di comando "binario", che è un semplice file che contiene un .js
shebang istruzioni:NPM pacchetto di script 'bin' per Windows
#!/usr/bin/env node
var Cucumber = require('../lib/cucumber');
// ...
Il binario è specificato in package.json
con la chiave di configurazione "bin"
:
{ "name" : "cucumber"
, "description" : "The official JavaScript implementation of Cucumber."
// ...
, "bin": { "cucumber.js": "./bin/cucumber.js" }
// ...
tutto questo funziona bene su sistemi POSIX. Qualcuno ha segnalato an issue durante l'esecuzione di Cucumber.js su Windows.
Fondamentalmente, il file .js
sembra essere eseguito tramite l'interprete JScript di Windows (non Node.js) e genera un errore di sintassi a causa dell'istruzione shebang.
La mia domanda è: qual è il modo consigliato di impostare uno script "binario" che funzioni su entrambi i sistemi UNIX e Windows?
Grazie.
Il problema era il nome di script binario che terminava con un suffisso ".js". NPM crea sia un 'cucumber.js' unix-friendly che un baco windows-friendly' cucumber.js.cmd' basato sull'istruzione di configurazione "bin". A causa del modo in cui Windows gestisce le "estensioni" del file, quando si digitava 'node_modules \ .bin \ cucumber.js' era in esecuzione il file' .js' tramite JScript invece del file '.cmd'. Grazie per il pedante post script;) – jbpros
Mi sono imbattuto esattamente in questo stesso problema. Sto cercando di trovare una soluzione che non richieda a me di dire agli utenti di Windows di digitare un comando diverso. I file JavaScript che precedono il file .cmd generato da npm vengono eseguiti in Windows Script Host; Spero che ci sia un modo per sfruttare tale proxy per la CLI basata su Node: http: // StackOverflow.it/questions/24113091/equivalente-di-unix-exec-in-jscript-windows-script-host – ELLIOTTCABLE
come faccio a farlo eseguire da nodejs invece di microsoft jscript? anche cambiarlo in 'node./index.js' non lo fa funzionare. correzione: ri eseguendo 'npm link' sembra funzionare –