2016-02-16 3 views
0

Я использую некоторые функции ES6 в приложении Node.JS, например ключевое слово let. Сервер отлично работает на моей локальной машине. После развертывания код на удаленной машине (которые могут быть доступны в Интернете) я обнаружил некоторые странное поведение: Если я запустить сервер, получив доступ к удаленной оболочки, а затем выполнить глотка, он работает безотказно:ES6 с Node.JS и SSH

local> ssh [email protected] 
remote> gulp 

Однако, если я ярлык, добавив команду SSH, Node.js вдруг жалуется на особенности ES6:

local> ssh [email protected] 'gulp' 
... 
[10:39:54] [nodemon] 1.8.1 
[10:39:54] [nodemon] to restart at any time, enter `rs` 
[10:39:54] [nodemon] watching: *.* 
[10:39:54] [nodemon] starting `node bin/www` 

/home/user/server/routes/searchItem.js:62 
      let myItem = items.filter(item => 
    [10:39:54] [nodemon] app crashed - waiting for file changes before starting... 
     ^^^ 
SyntaxError: Unexpected strict mode reserved word 

Почему это происходит?

+1

Можете ли вы запустить узел 'ssh [email protected] '-v'', чтобы проверить, какую версию узла он пытается использовать? – nils

+1

Вы сравнили результаты запуска следующих с помощью ssh и входа в систему: 'node --version',' echo $ NODE_PATH', 'which gulp',' echo $ PATH' и т. Д. ... –

ответ

0

Скорее всего, здесь происходит то, что у вас установлены две разные копии узла. Один из них находится в стандартном расположении, а другой находится в другом месте, которое подбирается из-за изменения вашего $PATH в сценарии инициализации/входа/сеанса вашей оболочки (например, .bashrc/.profile/.bash_profile).

Когда вы только что сделали ssh [email protected], начинается интерактивный сеанс. Это означает, что выполняются сценарии init/login/session оболочки. Тем не менее, передача явной команды использует другой механизм протокола ssh, который не запускает эти сценарии, которые будут выполняться перед выполнением команды (поэтому вы обычно видите motd и другую информацию при использовании первого метода, а не при использовании явной команды).

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