Node.js 安装后,会同时提供一个命令行(CLI
)工具。通过这个命令行工具,可以运行Node程序。通过它提供的一些命令参数选项,这些参数向内置的调试器,提供了多种脚本执行方式及其它有用的运行选项。
- 语法格式
- 选项参数
- -v, --version
- -h, --help
- -e, --eval "script"
- -p, --print "script"
- -c, --check
- -i, --interactive
- -r, --require module
- --no-deprecation
- --trace-deprecation
- --throw-deprecation
- --no-warnings
- --trace-warnings
- --trace-sync-io
- --zero-fill-buffers
- --preserve-symlinks
- --track-heap-objects
- --prof-process
- --v8-options
- --tls-cipher-list=list
- --enable-fips
- --force-fips
- --openssl-config=file
- --icu-data-dir=file
- 环境变量
1. 语法格式
Node.js 安装后,node
命令会随之安装。该命令的有如下几种语法格式:
node [options] [v8 options] [script.js | -e "script"] [arguments]
node debug [script.js | -e "script" | <host>:<port>] …
node --v8-options
当输入node
命令,而不输入任何参数时,会进入REPL
模式。请参考:
当输入node debug
命令时,会启动Node.js内置的调试器。请参考:
使用示例
对于一个Web服务器,运行并访问它,会响应一个'itbilu.com'
:
const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('itbilu.com\n'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
将其保存为example.js
文件,并使用node
命令运行它:
$ node example.js Server running at http://127.0.0.1:3000/
2. 选项参数
-v, --version
显示 ode的版本号
添加于v0.1.3
-h, --help
显示node命令行选项参数,可以通过这个参数查看当前版本的Node所支持的所有选项。但该参数输出参数说明较为简洁,查看详细文档可以使用man node
或info node
。
添加于v0.1.3
-e, --eval "script"
将后面的参数做为JavaScript执行。执行的模块可以是在REPL
中预定义的,也可以是"script"
参数。
添加于v0.5.2
-p, --print "script"
等价于-e
参数,但会输出结果。
添加于v0.6.4
-c, --check
检查脚本语法是否正确,但不执行。
添加于v5.0.0
-i, --interactive
打开REPL
即使stdin
还没有在终端出现。
添加于v0.7.7
-r, --require module
指定在启动时预加载的模块。
该参数与require()
的模块加载规则相同,module
可以是一个文件路径或模块名。
添加于v1.6.0
--no-deprecation
使用已移除特性时,静默处理警告信息。
添加于v0.8.0
--trace-deprecation
使用已移除特性时,打印堆栈信息。
添加于v0.8.0
--throw-deprecation
使用已移除特性时,抛出错误。
添加于v0.11.11
--no-warnings
屏蔽所有警告信息
添加于v6.0.0
--trace-warnings
出现警告时,打印堆栈信息
添加于v6.0.0
--trace-sync-io
在事件第一个事件循环后,打印同步I/O的堆栈信息
添加于v2.1.0
--zero-fill-buffers
自动使用0
填充Buffer或SlowBuffer实例。
添加于v6.0.0
--trace-preserve-symlinks
添加于v6.3.0
在解析和缓存模块时指示模块加载程序保存符号链接。
默认情况下,Node.js从指定路径加载一个模块时,路径是一个象征性地链接到硬盘的不同位置。Node.js会引用链接和模块的实际路径做为一个模块标识,并做为一个定位到其它依赖模块的根路径。在大多数情况下,这种处理方式是可行的。但是,有时这个链接会有同伴依赖(peer dependency)。
如下所示,默认情况下当模块moduleA
企图引用moduleB
时,由于有同伴依赖会抛出一个异常:
{appDir} ├── app │ ├── index.js │ └── node_modules │ ├── moduleA -> {appDir}/moduleA │ └── moduleB │ ├── index.js │ └── package.json └── moduleA ├── index.js └── package.json
而--preserve-symlinks
选项会使Node.js为相对真实路径模块使用符号链接路径,从而使同伴依赖的路径可以被发现。
--track-heap-objects
跟踪堆快照的堆对象分配。
添加于v2.4.0
--prof-process
使用v8
的--prof
对v8
进程输出分析
添加于v6.0.0
--v8-options
输出v8
的命令行选项。
注意:v8
的命令行选项支持横线-
和下划线两种_
两种方式。如:--stack-trace-limit
选项等同于--stack_trace_limit
添加于v0.1.3
--tls-cipher-list=list
指定可替代TLS密码的列表
添加于v4.0.0
--enable-fips
启用FIPS
兼容的密码启动(需要Node.js编译时使用./configure --openssl-fips
参数)
添加于v6.0.0
--force-fips
强制使用FIPS
兼容的密码启动(需要启用--enable-fips
选项)
添加于v6.0.0
--openssl-config=file
在启动时加载OpenSSL配置文件
添加于v6.9.0
--icu-data-dir=file
指定ICU数据路径(会替换NODE_ICU_DATA
)
添加于v6.9.0
3. 环境变量
NODE_DEBUG=module[,…]
','
-分隔,指定要打印调试信息的核心模块列表
添加于v0.1.32
NODE_PATH=path[:…]
':'
-分隔,指定搜索目录模块路径的前缀列表
注意:Windows系统中会以';'
分隔
添加于v0.1.32
NODE_DISABLE_COLORS=1
设置为1
时不会用在REPL
中
添加于v0.3.0
NODE_ICU_DATA=file
ICU (Intl object) 数据路径
添加于v0.11.15
NODE_REPL_HISTORY=file
持久化存储REPL历史文件的路径。默认为~/.node_repl_history
,可以通过变量重写。设置为空字符串时(""
或" "
)会禁用持久化REPL历史。
添加于v3.0.0
NODE_TTY_UNSAFE_ASYNC=1
设置为1
时,写到stdin
、stdout
和stderr
时会阻塞异步TTY输出。不建议使用这种模式
添加于v6.4.0