为什么Visual Studio Node.js项目使用shebang / bash脚本来启动服务器?

时间:2016-02-29 16:15:54

标签: javascript node.js visual-studio-2015

在visual studio node.js项目中,他们有一个bin目录,其中包含一个名为www的文件,其中包含以下内容:

#!/usr/bin/env node

var app = require('../app');

app.set('port', process.env.PORT || 3300);

var server = app.listen(app.get('port'), function() {
    console.log('server up and running on port ' + app.get('port'));
});

这个bash脚本的正确名称是什么?你为什么要采用这种方法而不是只在app.js中使用它?它与部署或可移植性有关吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

节点应用程序中的约定是我们创建主js文件以在名为bin/的文件www文件夹中运行服务器,该文件由node.exe运行。一个原因是将应用程序逻辑与具有起点的位置分开。当然,您可以在app.js中内联添加它,或者在server.js的同一目录中有一个app.js文件来执行相同的操作。您可以选择进入应用程序的入口点。部署时,又取决于您的特定环境。默认情况下,某些服务(如Azure Web APP)运行server.js(尽管您可以包含一个配置文件来指定您的入口点。)

此外,这仍然是一个javascript文件,而不是bash:

#!/usr/bin/env node

表示由/ usr / bin / env

中的可执行节点运行
#!/bin/bash

表示由/ bin / bash

中的可执行文件bash运行

两者的语法不同。如果变量foo在

中,则打印示例代码

Bash脚本:

if [ $((foo%2)) -eq 0 ];
then
    echo "even";
else
    echo "odd";
fi

使用Javascript:

if(foo%2==0)
    console.log(“even”);
else
    console.log(“odd”);