2015-05-20 11 views
7

Utworzono mój plik wykonywalny skryptu węzła w celu wykonania niektórych zadań. W systemie Windows mój skrypt węzła działa dobrze. Ale na Mac OS X (Yosemite), to nie działa.Plik wykonywalny skryptu węzła nie działa na komputerze Mac: env: node r: Brak takiego pliku lub katalogu

Mój skrypt węzła został opublikowany w systemie Windows.

Mój skrypt węzeł jest zainstalowany poprzez komendy npm:

npm install -g task-app 

Mój skrypt węzeł mieć tę pierwszą linię:

#! /usr/bin/env node 

próbowałem wiele pewne rozwiązania, aby rozwiązać mój problem, ale nadal jestem zakleszczony .

Oto te rozwiązania, które użyłem:

  1. odinstalować i zainstalować node.js
  2. wykonać to polecenie, aby utworzyć łącze do węzła: sudo ln -s/usr/bin/nodejs /usr/local/bin/node
  3. ustawić moją drogę z tym poleceniem: export pATH = $ pATH:/usr/local/bin/węzeł

Czy masz inne rozwiązania do zaproponowania?

EDIT:

początek mojego skryptu:

#! /usr/bin/env node 

var grunt = require('grunt'); 

//Get parameters from command line 
var args = process.argv.splice(2); 

[...] 

Odpowiedz

22

końcu znalazłem rozwiązanie mojego problemu.

Ponieważ plik skryptu węzła został utworzony w systemie Windows, plik ma format DOS (prawdopodobnie kończą się końcówki linii w formacie DOS). Więc użyłem moduł, który pozwoli na konwersję plików do formatu UNIX:

brew install dos2unix 
sudo dos2unix /usr/local/lib/node_modules/task-app/src/task-app.js 
+0

Dokładnie to, czego potrzebowałem. Dzięki! –

+0

praca z jonowym 2, dzięki – vuhung3990

+0

Naprawiono problem na moim Mac El Capitan z którego zacząłem na moim komputerze w domu, ratownik! –

6

Jest problem z nowymi liniami w skrypcie. Upewnij się, że po #!/usr/bin/env node następuje \n (styl unixowy) zamiast \r\n (styl okna/dos). Aby to naprawić, należy użyć komendy tr usunąć \r „s z pliku:

cat your_script.js | tr -d '\r' > fixed_script.js 
+0

poprawiłem moją odpowiedź i dodał przykładem naprawić –

+0

Próbowałem swoje polecenie, ale to nie działa po ponownym uruchomieniu mojego polecenia. Nie mam nowych linii po pierwszym wierszu ze skryptu węzła. Zobacz mój pierwszy post. – PauloDev

5

Można również użyć vim:

vim script 

:se ff=unix 
:wq 

To potwierdzi DOS stylu nowej linii do nowej linii typu UNIX.

0

Jak mówi PauloDev, jest to problem kończący linię Mac/Windows. Opracowanie, jeśli używasz nvm musisz zlokalizować swój pierwszy skrypt (w moim przypadku używam express-mvc-generator):

# install dos2unix 
brew install dos2unix 

# output the full path of your node version 
which node 
>> /Users/owmundy/.nvm/versions/node/v8.0.0/bin/node 

# confirm the file path 
cat /Users/<username>/.nvm/versions/node/v8.0.0/lib/node_modules/express-mvc-generator/bin/express 

# convert the line endings 
sudo dos2unix /Users/<username>/.nvm/versions/node/v8.0.0/lib/node_modules/express-mvc-generator/bin/express 

# then run your script 
Powiązane problemy