我在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
为什么会这样?
答案 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和其他信息,而不是在使用显式命令时)。