下面的内容为批处理文件run.bat中的内容,批处理命令中NODE_PATH为Node.js的安装路径。使用express 生成的项目。app.js为待测试的Node.js 文件。
@set NODE_PATH=D:\nodejs\demo\npm
@echo %PATH% | find "Node.js"
@if %errorlevel% == 1 set PATH=%PATH%%NODE_PATH%
@rem @echo %cd%
@node app.js
2、通过参数运行run.bat文件
批处理文件仅起到设置环境变量的作用,在Node.js项目的目录下运行。批处理文件命令为:
@set NODE_PATH=D:\nodejs\demo\npm
@echo %PATH% | find "Node.js"
@if %errorlevel% == 1 set PATH=%PATH%%NODE_PATH%
@rem @echo %cd%
@node %1
例如:
D:\nodejs\demo\>node app.js
停止方法:
1.首先,不能共享完毕之后,都通过Ctrl+C来关闭NodeJS服务器。
2.其次,如果仅仅能向客户端提供d:\ilinkit_logo.png文件的下载,是没有意义的,共享哪个文件,应该可以通过传入的参数来指定。我们首先来实现退出功能,如果客户端向服务器提交了http://localhost:8000/exit的请求,我们就执行服务器的退出操作。
代码如下:
1 var http = require( 'http' )
2 var fs = require('fs')
3 var url = require( 'url' )
4 (空行)
5 var file_path = "D:\\ilinkit_logo.png"
6 var file_stream
7 var buffer_box = []
8 var file_length = 0
9 (空行)
10 var file_name = file_path.substr( file_path.lastIndexOf('\\')+1 )
关键的代码解析如下:
第33行,我们通过request对象获取客户端请求的主机及端口内容。
第46行~第50行,我们判断客户端提交的请求信息,如果是http://localhost:8000/exit,则调用server.close()关闭服务器。为什么要判断是不是localhost提交的请求?因为我们希望仅仅在服务器本地提交的请求才能关闭NodeJS服务器。
验证方式如下:
1. 启动服务器:打开命令行,进入js脚本所在的位置,执行:node h_ilinkit_1.js。
2. 打开浏览器,输入:http://localhost:8000,显示如下:
说明当前服务器启动正常。
3. 打开浏览器,输入:http://localhost:8000/exit。
提示NodeJS服务器已经关闭,我们把浏览器关闭之后,发现服务器已经正常退出,如下所示。
这样,我们就没必要每次为了退出服务器,都去按Ctrl + C了。