前言
本文是笔者所总结的有关 Nodejs 基础系列之一,
本文介绍如何搭建 Nodejs 的开发环境;经过对比,IntelliJ IDEA Ultra 是不二的选择,本文将立足于 IntelliJ IDEA Ultra 来构建 Nodejs 的开发环境;
注明:本文为作者的原创作品,转载需注明出处;
IntelliJ IDEA Ultra 破解安装
下载官方的 IntelliJ IDEA Ultra
从官网上 https://www.jetbrains.com/idea/download/ 下载 IntelliJ IDEA Ultra 版本;
破解步骤
该破解步骤需要的资源从 http://idea.lanyus.com 上下载,
- 下载 JetbrainsCrack-2.7-release-str.jar
- 将 JetbrainsCrack-2.7-release-str.jar 拷贝到路径 /Applications/IntelliJ IDEA.app/Contents/bin 中
修改 /Applications/IntelliJ IDEA.app/Contents/bin/idea.vmoptions 在最末尾添加如下一行,
1
-javaagent:JetbrainsCrack-2.7-release-str.jar
启动 IntelliJ IDEA,在注册页面输入 Activation Code
1
BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUczQ0xJSzZGIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25hbCB1c2Ugb25seSIsImNoZWNrQ29uY3VycmVudFVzZSI6ZmFsc2UsInByb2R1Y3RzIjpbeyJjb2RlIjoiQUMiLCJwYWlkVXBUbyI6IjIwMTctMTEtMjMifSx7ImNvZGUiOiJETSIsInBhaWRVcFRvIjoiMjAxNy0xMS0yMyJ9LHsiY29kZSI6IklJIiwicGFpZFVwVG8iOiIyMDE3LTExLTIzIn0seyJjb2RlIjoiUlMwIiwicGFpZFVwVG8iOiIyMDE3LTExLTIzIn0seyJjb2RlIjoiV1MiLCJwYWlkVXBUbyI6IjIwMTctMTEtMjMifSx7ImNvZGUiOiJEUE4iLCJwYWlkVXBUbyI6IjIwMTctMTEtMjMifSx7ImNvZGUiOiJSQyIsInBhaWRVcFRvIjoiMjAxNy0xMS0yMyJ9LHsiY29kZSI6IlBTIiwicGFpZFVwVG8iOiIyMDE3LTExLTIzIn0seyJjb2RlIjoiREMiLCJwYWlkVXBUbyI6IjIwMTctMTEtMjMifSx7ImNvZGUiOiJEQiIsInBhaWRVcFRvIjoiMjAxNy0xMS0yMyJ9LHsiY29kZSI6IlJNIiwicGFpZFVwVG8iOiIyMDE3LTExLTIzIn0seyJjb2RlIjoiUEMiLCJwYWlkVXBUbyI6IjIwMTctMTEtMjMifSx7ImNvZGUiOiJDTCIsInBhaWRVcFRvIjoiMjAxNy0xMS0yMyJ9XSwiaGFzaCI6IjQ3NzU1MTcvMCIsImdyYWNlUGVyaW9kRGF5cyI6MCwiYXV0b1Byb2xvbmdhdGVkIjpmYWxzZSwiaXNBdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlfQ==-iygsIMXTVeSyYkUxAqpHmymrgwN5InkOfeRhhPIPa88FO9FRuZosIBTY18tflChACznk3qferT7iMGKm7pumDTR4FbVVlK/3n1ER0eMKu2NcaXb7m10xT6kLW1Xb3LtuZEnuis5pYuEwT1zR7GskeNWdYZ0dAJpNDLFrqPyAPo5s1KLDHKpw+VfVd4uf7RMjOIzuJhAAYAG+amyivQt61I9aYiwpHQvUphvTwi0X0qL/oDJHAQbIv4Qwscyo4aYZJBKutYioZH9rgOP6Yw/sCltpoPWlJtDOcw/iEWYiCVG1pH9AWjCYXZ9AbbEBOWV71IQr5VWrsqFZ7cg7hLEJ3A==-MIIEPjCCAiagAwIBAgIBBTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE1MTEwMjA4MjE0OFoXDTE4MTEwMTA4MjE0OFowETEPMA0GA1UEAwwGcHJvZDN5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcQkq+zdxlR2mmRYBPzGbUNdMN6OaXiXzxIWtMEkrJMO/5oUfQJbLLuMSMK0QHFmaI37WShyxZcfRCidwXjot4zmNBKnlyHodDij/78TmVqFl8nOeD5+07B8VEaIu7c3E1N+e1doC6wht4I4+IEmtsPAdoaj5WCQVQbrI8KeT8M9VcBIWX7fD0fhexfg3ZRt0xqwMcXGNp3DdJHiO0rCdU+Itv7EmtnSVq9jBG1usMSFvMowR25mju2JcPFp1+I4ZI+FqgR8gyG8oiNDyNEoAbsR3lOpI7grUYSvkB/xVy/VoklPCK2h0f0GJxFjnye8NT1PAywoyl7RmiAVRE/EKwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQC9WZuYgQedSuOc5TOUSrRigMw4/+wuC5EtZBfvdl4HT/8vzMW/oUlIP4YCvA0XKyBaCJ2iX+ZCDKoPfiYXiaSiH+HxAPV6J79vvouxKrWg2XV6ShFtPLP+0gPdGq3x9R3+kJbmAm8w+FOdlWqAfJrLvpzMGNeDU14YGXiZ9bVzmIQbwrBA+c/F4tlK/DV07dsNExihqFoibnqDiVNTGombaU2dDup2gwKdL81ua8EIcGNExHe82kjF4zwfadHk3bQVvbfdAwxcDy4xBjs3L4raPLU3yenSzr/OEur1+jfOxnQSmEcMXKXgrAQ9U55gwjcOFKrgOxEdek/Sk1VfOjvS+nuM4eyEruFMfaZHzoQiuw4IqgGc45ohFH0UUyjYcuFxxDSU9lMCv8qdHKm+wnPRb0l9l5vXsCBDuhAGYD6ss+Ga+aDY6f/qXZuUCEUOH3QUNbbCUlviSz6+GiRnt1kA9N2Qachl+2yBfaqUqr8h7Z2gsx5LcIf5kYNsqJ0GavXTVyWh7PYiKX4bs354ZQLUwwa/cG++2+wNWP+HtBhVxMRNTdVhSm38AknZlD+PTAsWGu9GyLmhti2EnVwGybSD2Dxmhxk3IPCkhKAK+pl0eWYGZWG3tJ9mZ7SowcXLWDFAk0lRJnKGFMTggrWjV8GYpw5bq23VmIqqDLgkNzuoog==
如图,将上面的激活码复制粘贴到下面的激活窗口中即可;
- 成功,可以看到激活时间是到 2099 年了,
Nodejs 如何升级成最新的版本
我本地的 Nodejs 版本较旧,想安装成最新的版本;如何执行,参考 https://stackoverflow.com/questions/8191459/how-do-i-update-node-js
删除后安装指定版本
1
$ sudo npm cache clean -f
1
$ sudo npm install -g n
这是安装最新版本
1
sudo n stable
或者选择一个指定的版本进行安装,比如
1
sudo n 0.8.20
brew upgrade node
由于我本机并不是通过 brew 进行安装的,所以这种方式只能放弃
不过看到大多数主流派都建议使用 NVM 来管理 Nodejs 的版本和环境,所以,笔者将会在后续内容对 NVM 进行一系列的探究和整理;
搭建开发环境
Nodejs 环境安装篇
因为历史遗留的问题,我本机安装过 6.2.2,现在迫切的需要将老版本更新为新的版本 8.9.4,从 https://stackoverflow.com/questions/8191459/how-do-i-update-node-js 中可知,现在流行使用 nvm 来管理不同的 Node 版本的信息;(备注,使用 NPM 也可以升级 nodejs,参考 https://davidwalsh.name/upgrade-nodejs),
安装 nvm
nvm 的安装和使用参考 https://github.com/creationix/nvm
mac 上安装 nvm
不过 mac 系统中可以通过 brew 进行安装,
1 | $ brew install nvm |
然后修改本地的 profile 信息,在 ~/.bash_profile 中添加如下的信息,
1 | export NVM_DIR="$HOME/.nvm" |
然后执行
1 | $ source ~/.bash_profile |
Linux 系统上安装 NVM
cURL
1 | $ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash |
Wget
1 | $ wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash |
安装最新版本的;
1 | $ nvm install stable |
使用 NVM 安装 Nodejs
如何使用 nvm 安装 nodejs 参考 https://davidwalsh.name/nvm ,下面笔者将使用 nvm 安装当前的 nodejs LTS 版本 8.9.4
1 | $ nvm install 8.9.4 |
不过不幸的是,安装了很多次都报如上的错误,很显然是在下载文件的时候出现了网络错误,导致文件下载不成功;于是手动拷贝 https://nodejs.org/dist/v8.9.4/node-v8.9.4-darwin-x64.tar.gz 到浏览器下载,然后将文件拷贝到 /Users/mac/.nvm/.cache/bin/node-v8.9.4-darwin-x64/ 目录中,再执行上述的安装命令,就不会从网上去下载了,而是直接使用本地的安装文件,
1 | $ nvm install 8.9.4 |
检查当前 Nodejs 版本
1 | $ node -v |
可见当前的终端已经默认切换为使用 8.9.4 版本了;不过,要注意,这个也只是限于当前的终端有效,我 hexo 目录的终端使用的依然是 6.6.2,
1 | $ node -v |
这个时候需要使用命令
1 | $ nvm use 8.9.4 |
进行显式的切换,注意如果本地值安装了一个 8.x 版本可以直接使用
1 | $ nvm use 8 |
来进行切换;然后启动我的博客,
1 | $ hexo server --draft |
可见报错,使用了不同版本的 node,但是最终博客还是依然启动成功;但是为了避免引起未知的问题,还是将 Node 切换为 6.2.2;但是因为 6.2.2 不是通过 nvm 安装的,所以切换回报错,
1 | macdeMacBook-Pro:www.shangyang.me mac$ nvm use 6.2.2 |
那么现在只能试图修复这个错误了,
1 | $ npm rebuild |
不过运行了一晚上没有成功,于是使用 nvm 以安装 8.9.4 的相同的方式安装 6.2.2,仍然报下面相同的错误,
1 | $ hexo server --draft |
然后 Google 直接搜索这个错误,https://github.com/hexojs/hexo/issues/1922 解决方法是,将 Node 和 Hexo 全部使用最新的版本,升级 hexo 的方法
1 | $ npm install hexo --no-optional |
再次执行,
1 | $ hexo server --draft |
成功了,不过日志也少了很多;升级以后问题是 math 公式全部失效了,OK,这部分是因为 mathjax 老的 CDN 服务器迁移了的原因,导致 mathjax 的 CSS 语法加载不了所导致的,只需要更改 mathjax 的 CDN 为新的 CDN 地址即可,这部分内容参考笔者的 hexo 使用总结博文;
Node 和 Hexo 一同升级以后,性能上快了许多;Ok,至此,我本机的 Nodejs 的环境通过 NVM( Node Version Management ) 总算是规范化了,下面看看
卸载 Nodejs
- go to /usr/local/lib and delete any node and node_modules
- go to /usr/local/include and delete any node and node_modules directory
- if you installed with brew install node, then run brew uninstall node in your terminal
- check your Home directory for any local or lib or include folders, and delete any node or node_modules from there
- go to /usr/local/bin and delete any node executable
上面是指常规的安装方式既是不适用 NVM 的安装 Nodejs 以后的卸载的方式,如果使用 NVM 来管理 Node 环境,那么就简单许多了,
IntellJ IDEA 配置
安装 Nodejs 开发的 Plugin
- 启动 IntellJ IDEA,然后进入 plugins
- 点击 Install JetBrains Plugin…
- 输入 Node
可以看到总共出现了两个 Nodejs 相关的 plugin,一个是 Node.js Remote Interceptor,从描述中可以看到,该 plugin 的主要功能是允许本地连接远程的 Nodejs 服务器进行调试,这个功能应该比较强大,不过暂时不需要;我们选择 NodeJS plugin,然后点击右上角 Install 按钮进行安装; - 重启 IntellJ IDEA
- 可以看到在新建项目的时候,出现了 Node.js 和 NPM 选项表示 nodejs plugin 安装成功
Nodejs 工程
新建工程
- 新建 Nodejs 项目,在创建工程的时候会默认使用 JADE 作为 Nodejs 的网页模板生成器,这里可以选择成最适应自己项目的模板,同样,会默认使用 Express 4.15.5;注意 Nodejs 默认使用的是 8.9.4
- 创建成功以后的项目骨架如图,
工程的基本配置
- Preferences → Language & Frameworks → Node.js and NPM
- 点击右上角的三个点的按钮,可以选择 Node 解释器也就是 Node Interpreter
- 可以根据需要通过 + 按钮可以新增诸如 Express 这样的模块;
enable node.js interpreter
有时候,一个老的项目,当时配置一切正常的,但是在重新打开该工程以后,却不是 Node.js 的项目了,配置都一切正常,这个时候,多半的原因是没有 enable node.js 解释器所导致的,
如图,点击 enable,然后在弹出框中点击 configure 即可;这样便便表示,使用 Node.js 环境来编译此工程,否则会出现一系列的编译错误,比如 Unresolved function or method for require()
常用设置
快捷键
常用快捷键设置
常用快捷键整理
CMD + “+/-“:单个方法的展开和折叠
CMD + SHIFT + “+/-“:全局方法的展开和折叠
CMD + 7:展示 outline 视图
CMD + F12:悬窗展示 outline 视图,类似于 Eclipse 中点击 CMD + O 的视图方式;
可以看到,窗口展示所有的相关快捷键;
调试
点击左下角的按钮,便会弹出调试窗口;
File Types
有时候,一些 IDEA 不能识别的后缀名的文件,IDEA 会提示选择用什么样的编译器来进行打开,一旦选择错误以后,会导致编译错误;比如,在使用 dotenv 定义了一个 .env 的文件,IDEA 不能识别,结果我错误的选择使用 TypeScript 来进行编辑,结果导致整个项目构建失败,报错;那么怎么修复它呢?如图,
去掉 .env 就好了;
Bookmark
有时候,代码分散在各个地方,很难迅速的找到各个地方散落的代码,这个时候,Bookmarks 就能起到关键性的作用了;
- 如何创建 Bookmark,
首先,选中需要创建 Bookmark 的代码行,
然后,choose Navigate | Bookmarks | Toggle Bookmark With Mnemonic on the main menu,该步骤也可以通过快捷键 CMD + F11 完成,
然后,press one of the keys 0-9 or A-Z,便生成了相应的 Bookmark,如图,
并且在 idea 的最右边,生成了一个可以点击的快捷键图标; - 删除 Bookmark,直接在复选 Toggle Bookmark With Mnemonic 即可,或者直接点击 CMD + F11 快捷键;
- 快速查看所有的 Bookmark,choose Navigate | Bookmarks | Show Bookmarks,或者点击 Shift + F11
- 如何快速切换至某个 Bookmark
- Ctrl + Num
如果 Bookmark 是使用数字作为标记的,那么可以直接使用 Ctrl + Num 快速定位到指定的代码区间;不知道是不是 bug,ctrl + 1 不起作用?其它的都 Ok - Navigate to Next
Navigate | Bookmarks | Next Bookmarks,可惜,该操作目前没有看到快捷键设置;使用 Ctrl + Num 的方式吧! - 或者可以 cmd + 2 快速的显示 Favorites 窗口,然后在其中可以快速的点选某个 Bookmark,如图,
- Ctrl + Num
Reference: https://www.jetbrains.com/help/idea/managing-bookmarks.html
常见错误
Destructuring assignments are not supported
当在 javascript 代码中写如下的代码的时候,
1 | const { spawn } = require('child_process'); |
会报这样的错误,Destructuring assignments are not supported by current JavaScript version
,从 https://stackoverflow.com/questions/37688587/destructuring-assignments-are-not-supported-by-current-javascript-version 中可知,这是 ECMAScript 6 的语法,需要在 IDEA 中切换,
点击应用,确定即可修复该错误;
Waiting for the debugger to disconnect…
1 | const circle = require('./modules/circle.js'); |
当我把断点打在上述的第一行代码中的时候,反复报错,调试不成功,如下,
1 | const circle = require('./modules/circle.js'); |
有些人说是因为 IDEA 2017.03 这个版本的 bug 有些人说是 Node 8 的 bug,原本以为是有某个调试进程没有退出,但是在我重启电脑以后依然报这个错误,这就非常的奇怪了;不管是什么原因造成的,我想知道的是解决办法,结果,出乎我的意料的是,我在第一行之前添加一行新的代码,像下面这样,调试居然就启动了… 我一脸茫然…
禁用 ESLint
有时候一些正常的代码也会误报错误,一下代码在开启了 ECMAScript 6 以后仍然报错,
解决办法是禁用 ESLint 验证,如图,将 Enable 的勾去掉;