2012-07-21 55 views
0

我有一个问题,试图找出如何在issexpress/issnode 下启动nodejs网站而不使用Web-Matrix。基本上我需要通过点击Web-Matrix中的开始/停止来完成同样的事情,但在它之外。如何从命令行启动iisexpress/iisnode下的nodejs web站点?

UPDATE

如果一个网站可以仅通过

node.exe sever.js 

为什么我需要iisexpress或iisnode或网络矩阵或其他任何运行?

回答

0

您不需要IISNode或WebMatrix来在Windows上进行节点开发。

IISNode提供了从节点到IIS的桥梁 - 如果您在Windows上运行节点,这可能是您在生产中要做的事情。在开发时,我们将包含在WebMatrix中,以便在开发时和生产中获得一致的体验。如果你不想使用IISNode,你可以使用命令行来启动进程(正如你想象的那样)。

WebMatrix只是一个代码编辑器。它使节点项目的工作变得更加简单,并为节点开发提供了一堆花招和哨音。出于上述原因,我们使用节点模板来降低IISNode - 但您当然不必使用它。

+0

我很抱歉改变主题,但你说我们指的是WebMatrix,所以我相信你有点接近它。在WebMatrix中为Knockout.js进行开发是非常烦人的事情,即WebMatrix重新格式化脚本标记的内容,尽管它的类型不是text/javascript(在我的情况下是text/html)。我不需要重新格式化,我该如何禁用此功能? – 2012-07-30 23:07:53

+0

那么我会说,让用户安装不必要的东西,如国际空间站表达不会有助于轻松学习如何在node.js中编程。因为它不提供直接的好处,也不能解释为什么需要IIS。通过提及“一致的体验”,您是否暗示IIS添加到node.js中的某些东西在编写node.js for Windows时需要考虑? – 2012-07-30 23:21:02

+0

谢谢你的答案btw! – 2012-07-30 23:22:08

0

一旦您在IISExpress中配置了您的站点(可能通过WebMatrix或VisualStudio),它将被记录在IIS中,默认情况下使用您的web项目的名称。它现在可以这样初始化:

start C:/Program Files/IIS Express/iisexpress /site:YourProjectName

所以,你可以调用iisexpress工具内server.js:

/* in your server.js */ 

var fs = require("fs"); 
var exec = require("child_process").exec; 

var IIS_PATH = "C:/Program Files/IIS Express/"; 
var IIS_PATH_64 = "C:/Program Files (x86)/IIS Express/"; 
var IIS_COMMAND = "iisexpress"; 
var SITE_NAME = process.argv.slice(2)[0] || "MyDefaultWebProject"; 
var IIS_PARAM = " /site:" + SITE_NAME; 

if(!fs.existsSync(IIS_PATH)) 
    IIS_PATH = IIS_PATH_64; 

exec("start " + IIS_COMMAND + IIS_PARAM, {cwd: IIS_PATH }); 

和运行这样的:

node server.js MyWebProject

; )