带有Node.JS和SSH的ES6

时间:2016-02-16 09:46:31

标签: node.js shell ssh

我在Node.JS应用程序中使用了一些ES6功能,例如let关键字。服务器在我的本地机器上运行正常。在将代码部署到远程计算机(可以在线访问)之后,我发现了一些奇怪的行为:如果我通过获取对远程shell的访问然后执行gulp来启动服务器,它可以完美地运行:

local> ssh user@myserver.com
remote> gulp

但是,如果我通过将命令添加到SSH来获取快捷方式,Node.JS突然抱怨ES6功能:

local> ssh user@myserver.com '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 个答案:

答案 0 :(得分:0)

这里最常发生的事情是您安装了两个不同的节点副本。其中一个位于标准位置,另一个位于其他位置,由于您在shell的初始化/登录/会话脚本中更改了var lettersFromFolderOne = dbContext.Letters .Where(letter => letter.Folder.CreationDate == DateTime.Now) .ToList(); (例如$PATH } / .bashrc / .profile)。

当您执行.bash_profile时,将启动交互式会话。这意味着将执行任何shell init / login / session脚本。但是,传递显式命令使用不同的ssh协议级机制,在执行命令之前不会触发这些脚本(这就是为什么在使用第一种方法时通常会看到motd和其他信息,而不是在使用显式命令时)。