在Sublime Text中可以很容易配置新的编译运行命令,下面的截图是汉化版的中文菜单,英文菜单请直接对照。
首先需要在本地安装Node,默认的Node会加入到系统的环境变量,这样执行Node命令时就不需要到安装路径下执行了。
选择“新编译系统”,在打开文件中插入以下代码:
{
"cmd": ["node", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.js",
"shell":true,
"encoding": "utf-8",
"windows":
{
"cmd": ["node", "$file"]
},
"linux":
{
"cmd": ["killall node; node", "$file"]
}
}
保存为Node.sublime-build,以后想运行当前文件,直接使用快捷键“Ctrl+B”即可,上述这段代码是大部分网上教程分享的,但是这个配置有一个问题,在windows系统中,这样每Build一次就会新产生一个Node进程,占用1个端口,下次想重新Build时会提示端口被占用
function logger(req,res,next){
console.log('%s %s',req.method,req.url);
next();
}
function hello(req,res){
res.setHeader('Content-Type','text/plain');
res.end('hello world');
}
var connect=require('connect');
var app=connect();
app.use(logger).use(hello).listen(3000);
例如上述的connect中间件程序中监听了3000端口,第一次Build时没有错误,但是第二次Build就会发生下面的错误。
网上又有人给出了下面的配置来解决问题:
{
"cmd": ["node", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.js",
"shell":true,
"encoding": "utf-8",
"windows":
{
"cmd": ["taskkill /F /IM node.exe", ""],
"cmd": ["node", "$file"]
},
"linux":
{
"cmd": ["killall node; node", "$file"]
}
}
这样配置的本意是在cmd命令前面加个kill node进程的命令,但是实际测试并没有起作用,最后我将第一行命令改成如下所示同时执行两个命令,在windows系统上就没出现上述问题了。
{
"cmd": "taskkill /F /IM node.exe & node \"$file\"",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.js",
"shell":true,
"encoding": "utf-8",
}