2015-01-26 5 views
1

Я разрабатываю приложение cli для узла, используя PyCharm из Windows, и работает только в Windows, но всегда возвращает : No such file or directory при запуске из Linux. Я смог воспроизвести проблему, используя довольно простой пример в качестве теста. Попробуйте установить каждую версию и обратите внимание на то, как один из опубликованных из Windows не запускается в Linux или OSX.Node bin файл не распознается в linux или osx

Опубликовано в Windows: npm -g install [email protected] && cli-test

Опубликовано в Linux: npm -g install [email protected] && cli-test

package.json:

{ 
    "name": "cli-test", 
    "version": "0.0.1", 
    "bin": { 
     "cli-test": "./cli.js" 
    } 
} 

cli.js

#!/usr/bin/env node 
console.log('hello world!'); 

Если я напишу этот код, а затем его установлю с помощью sudo npm -g install из каталога проекта в Linux, тогда запустите cli-test, он выдает ошибку, упомянутую выше. Если я сделаю то же самое из окон, он будет правильно управлять журналами.

я могу заставить его работать на Linux, используя следующие шаги:

  1. Откройте каталог проекта на Linux
  2. Переименовать cli.js в cli.old.js
  3. Создать новый файл с именем cli.js
  4. Copy содержимое старого файла в новый файл

Почему он не запускается в Linux, когда я публикую в npm из Windows без ручного воссоздания файла из Linux?

ответ

4

Окончания строк на основе Windows убивают вас. Полная ошибка говорит: env: node\r: No such file or directory, потому что Windows помещает туда \ r там (как часть \ r \ n для новых строк), но Linux и OSX просто используют \ n для новых строк.

Там в настоящее время обсуждается на GitHub вопросам НПМ по этому вопросу, а также несколько возможных путей их устранения: https://github.com/npm/npm/issues/2097

+0

Спасибо за указание на этот вопрос, я бы никогда не наткнулся на него самостоятельно. Очень неприятно разбираться и отслеживать проблему в противном случае. – Josh

+1

Оказывается, я могу настроить весь проект на использование разделителей линии LF, и я изменил значение по умолчанию в пределах pycharm. – Josh

+0

Я также разрабатываю Windows и сталкиваюсь с той же проблемой при установке в Linux: нет такого файла или каталога при запуске файла bin. Этот пост спасает меня от кучи после безумного поиска ответа на 3 дня в сети! Npm следует упомянуть в своих документах: предупреждение при запуске npm publish из Windows – Green

Смежные вопросы