本文同步自我的个人博客:http://www.52cik.com/2015/10/21/sublime-text-run-es6.html

之前在博客园里写过一篇《Sublime Text 之运行 js 方法》,这篇算是续篇了,因为就是改个字符串而已。

直接进入正文吧。

安装Babel

$ npm install -g babel

好了,没什么好说的。

由于babel发布了第6版本后,安装babel无效,官方提示安装babel-cli,但运行时错误,暂时不知道怎么处理,所以安装老版本先。

$ npm install -g babel@5.8.20

创建Sublime Text编译系统

选择菜单 **Tools --> Build System --> new Build System... **

中文版的话是 工具 --> 编译系统 --> 新建编译系统...

然后写如下配置:

{
"working_dir": "${project_path:${folder}}",
"selector": "source.js",
"encoding": "utf-8",
"shell": true,
"windows": {
"cmd": ["taskkill /f /im node.exe >nul 2>nul & babel-node \"$file\""]
},
"osx": {
"cmd": ["killall node >/dev/null 2>&1; babel-node \"$file\""]
},
"linux": {
"cmd": ["killall node >/dev/null 2>&1; babel-node \"$file\""]
}
}

接着保存为 javascript.sublime-build,保存位置默认即可。

好了,现在你可以写 es6 的代码测试下了,下面是运行效果。

mac 效果

win 效果

运行失败处理

当然也有运行不了的情况,不过大体就分为下面几种情况。

Sublime Text 以下简称 st

  • Sublime Text 2 为 st2
  • Sublime Text 3 为 st3

一. 环境变量

如果执行不了,而是报错,错误类似 xxx babel-node: command not found 这样的,那么就是环境变量的问题。

只要添加下 nodebabel-node 的路径到环境变量里。

如果是mac下,我推荐添加 path 属性到你的 javascript.sublime-build 里,会更方便。

{
"path": "/usr/local/bin",
"working_dir": "${project_path:${folder}}",
"selector": "source.js",
"encoding": "utf-8",
"shell": true,
"windows": {
"cmd": ["taskkill /f /im node.exe >nul 2>nul & babel-node \"$file\""]
},
"osx": {
"cmd": ["killall node >/dev/null 2>&1; babel-node \"$file\""]
},
"linux": {
"cmd": ["killall node >/dev/null 2>&1; babel-node \"$file\""]
}
}

就类似这样,mac 下就可以运行了。 win 下安装 node 默认就添加到环境变量了,所以不需要考虑这样的问题。

二. 含有中文路径 (仅win)

当路径里出现中文的时候,win 下什么都不会输出,好奇怪,我也不知道为什么,但 mac 下可以正常运行。

他们唯一区别只是环境字符集一个默认是 gbk,一个是 utf-8,难道只是这个问题?

如果有哪位大神知道,还望指点一二。

st2不正常 st3正常

三. 中文用户名 (仅win)

如果你的系统用户名是中文的,我指的是系统登录的用户名,如果是中文的,那么怎么都运行不了,奇怪了。

一开始我以为是 C:\Users\用户名\AppData\Roaming\npm 这个问题,但是我修改了 npm 安装目录,问题依旧。

暂时没想到好的处理方法,最直接有效的解决方法就是换英文用户名。

st2不正常 st3正常

四. 支中文用户+中文路径 (仅st3)

目前为止,几个朋友向我反应了运行失败的情况,没有中文路径,不是中文用户名,依然运行失败。

我远程调试了问题最多,最爱问莫名其妙问题的 @淫狐 同学的机子。

他是 win10+st3,英文用户名,英文名路径,遇到的错误是 "文件名、目录名或卷标语法不正确"

更奇怪的是,他说之前能运行js的,但是安装 babel 却不能运行 es6。

我就纠结了,打开了他原先的配置,粗略看来都一样,调试了几次后发现问题就出在 cmd: 的参数写法上。

st2 可以合并为一行写参数,而 st3 却不支持,只能拆开写。

"cmd": ["taskkill /f /im node.exe >nul 2>nul & babel-node \"$file\""]

之前,我们是这么写的,现在要改成这样。

"cmd": ["taskkill", "/f", "/im node.exe", ">nul", "2>nul", "&", "babel-node", "$file"]

或者干脆这样。

"cmd": ["babel-node", "$file"]

这样就可以兼容 st3 了,而且支持中文用户名支持路中文路径

至于为什么要加是 taskkill /f /im node.exe >nul 2>nul,是因为当脚本耗时比较长,或者死循环的时候,你再次执行,可以自动结束之前的进程,这样就免去了我们手动关闭进程的麻烦。

如果你本地要用 node 跑任务的,比如 gulp watch 之类的,那就不要加这了,否则你的任务就会被关掉。

所以,有得必有失,看情况取舍吧。

好了,来看下完整的例子。

{
"working_dir": "${project_path:${folder}}",
"selector": "source.js",
"encoding": "utf-8",
"shell": true,
"windows": {
"cmd": ["taskkill", "/f", "/im", "node.exe", ">nul", "2>nul", "&", "babel-node", "$file"]
},
"osx": {
"cmd": ["killall node >/dev/null 2>&1; babel-node \"$file\""]
},
"linux": {
"cmd": ["killall node >/dev/null 2>&1; babel-node \"$file\""]
}
}

OK,这个兼容 ST3 不论是 win mac 还是中文用户,中文路径,都支持

后记

折腾了几天,终于大致解决了所有问题,简单说 st2 在 win 下只要有中文路径,或者中文用户,就无法运行,st3 则不受干扰,所以 st2 用户可以考虑升级 st3。

其实我知道为什么用 st2,因为只有 st2 是 100% 汉化,st3 只有菜单汉化。我 win 上是 st2 汉化的,mac 上是 st3 英文的,由于习惯了,所以所有东西都知道怎么操作,现在来说,汉不汉化都无所谓了。反而升级 st3 不会遇到奇葩bug。

Sublime Text 之运行 ES6 (基于babel)的更多相关文章

  1. 如何在Sublime text中运行PHP文件

    如何在Sublime text中运行PHP文件 2014-06-14 17:17 3709人阅读 评论(1) 收藏 举报 phpSublime Text 一.将PHP安装目录放如环境变量PATH 二. ...

  2. cx_Oracle在sublime text里运行遇到 ImportError错误解决办法

    如果你装完cx_Oracle之后,命令行运行没错,但是在sublime text里运行, 就遇到这个错误: ImportError: dlopen(/Library/Python/2.7/site-p ...

  3. Sublime Text 编译运行Kotlin

    Sublime Text 编译运行Kotlin 转 https://blog.csdn.net/pirate7777777/article/details/72655293 kotlin最近是火了,所 ...

  4. Sublime Text 3运行JavaScript控制台

    Node.js是一个基于Chrome JavaScript运行时建立的平台,小巧方便搭建.运行的端口可以在浏览器上运行,显示效果,但每次用浏览器也挺麻烦,我们这里讲的是在sublime text2中配 ...

  5. Sublime Text 之运行 js 方法[2015-5-6更新mac下执行js]

    昨天说完<Sublime Text 2 绿化与汉化 [Windows篇]>,今天我们来说说怎么用st直接运行 js 吧.群里的小伙伴一直对我的 ST 能直接运行js感到非常好奇,今天我就公 ...

  6. [SublimeText] Sublime Text 2 运行 Python 脚本中文路径解决方法

    在 SublimeText 中直接运行 Python 脚本,出现以下报错提示: Running python -u C:\Documents and Settings\Administrator\桌面 ...

  7. 在 Sublime Text 直接运行 Javascript 调试控制台

    转载自:http://www.jianshu.com/p/43b0726792f7 sublime text javascript Sublime Text是深受喜欢的多语言编辑器,很多开发人员都选择 ...

  8. sublime text 2 运行 python时返回EOFError: EOF when reading a line错误

    其主要原因是sublime text 2中python没有与 stdin(标准输入)连接所致,解决方法也很简单,那就是安装sublimeREPL插件,然后 Tools->sublimerepl- ...

  9. Sublime text 3 运行python3

    要在Sublime text3编译器中成功运行 python3,需要在编译器设置中将python3添加至编译器中 新建编译系统 编辑弹出的文件,添加如下内容: { "cmd":[& ...

随机推荐

  1. 软件测试作业1--描述Error

    记忆犹新的错误: 上个学期选修了可视化这门课程,最后大作业用d3实现,在使用d3读取csv数据的时候出现了以下Error: 我先是在代码中读取了某csv格式的数据,并且将其存入变量root中,然后对r ...

  2. PHP模拟发送POST请求之四、加强file_get_contents()发送POST请求

    使用了笨重fsockopen()方法后,我们开始在PHP函数库里寻找更简单的方式来进行POST请求,这时,我们发现了PHP的文件函数也具有与远程URL交互的功能. 最简单的是fopen()和fread ...

  3. 使用Spring Security Oauth2完成RESTful服务password认证的过程

            摘要:Spring Security与Oauth2整合步骤中详细描述了使用过程,但它对于入门者有些重量级,比如将用户信息.ClientDetails.token存入数据库而非内存.配置 ...

  4. MyEclipse下创建的项目导入到Eclipse中详细的图文配置方法

    一.情景再现. 有些人比较喜欢用Myeclipse开发,有些人却比较喜欢用eclipse开发.但是其中有一个问题,Myeclipse里面的项目导入的时候出现了一个小小的问题. 如下: 二.说明问题 导 ...

  5. C语言杂谈(三)存储类别

    本文讨论C语言中的存储类别,包括数据在内存的存储.变量的存储类别.函数的存储类别.生存周期.下图为计算机的存储空间,有寄存器和内存. 一.存储区域 1.寄存器:存放立即参加运算的数据. 2.系统区:存 ...

  6. xamarin.android 给View控件 添加数字提醒效果-BadgeView

    本文代码从java项目移植到.net项目   java开源项目:https://github.com/jgilfelt/android-viewbadger using System; using S ...

  7. 令人哭笑不得的org.hibernate.MappingException: Unknown entity

    今天处理的任务是从一套系统中分离出微信易信功能代码添加到另一套系统中..本来是一个很简单的任务,但是分离移植过去后,一运行报了个错: nested exception is org.hibernate ...

  8. 探索 OpenStack 之(14):OpenStack 中 RabbitMQ 的使用

    本文是 OpenStack 中的 RabbitMQ 使用研究 两部分中的第一部分,将介绍 RabbitMQ 的基本概念,即 RabbitMQ 是什么.第二部分将介绍其在 OpenStack 中的使用. ...

  9. 迭代加深搜索 codevs 2541 幂运算

    codevs 2541 幂运算  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Description 从m开始,我们只需要6次运算就可以计算出 ...

  10. Chrome浏览器与常用插件推荐

    Chrome浏览器与常用插件推荐 官方chrome下载:http://www.google.cn/chrome/ 提示:需要FQ才能安装. 1,AdBlock 谷歌屏蔽广告: https://chro ...