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服务器,运行并访问它,会响应一个'niefengjun.cn':
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('niefengjun.cn\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
