仅在脚本中未定义节点查询字符串
node querystring not defined in script only
我可以从脚本中使用节点 4.2.6 中的查询字符串,但我可以从节点提示符中使用。这里有一些证据。
我有以下脚本:
$ cat test.js
console.log(process.versions)
console.log(querystring)
当我 运行 时出现错误:
$ node test.js
{ http_parser: '2.5.0',
node: '4.2.6',
v8: '4.5.103.35',
uv: '1.8.0',
zlib: '1.2.8',
ares: '1.10.1-DEV',
icu: '56.1',
modules: '46',
openssl: '1.0.2e' }
/path/to/file/test.js:2
console.log(querystring)
^
ReferenceError: querystring is not defined
at Object.<anonymous> (/path/to/file/test.js:2:13)
at Module._compile (module.js:410:26)
at Object.Module._extensions..js (module.js:417:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Function.Module.runMain (module.js:442:10)
at startup (node.js:136:18)
at node.js:966:3
但是如果我在命令行中进入节点,我不会收到错误。
$ node
> console.log(process.versions)
{ http_parser: '2.5.0',
node: '4.2.6',
v8: '4.5.103.35',
uv: '1.8.0',
zlib: '1.2.8',
ares: '1.10.1-DEV',
icu: '56.1',
modules: '46',
openssl: '1.0.2e' }
undefined
> console.log(querystring)
{ unescapeBuffer: [Function],
unescape: [Function],
escape: [Function],
encode: [Function],
stringify: [Function],
decode: [Function],
parse: [Function] }
undefined
console.log() 只是为了证明——我根本不能在脚本中使用查询字符串。有什么问题吗?
节点 REPL(只需键入可执行文件名称 (node
) 即可自动加载内置模块作为全局变量,因为它们可以通过名称访问,以方便使用。文档 here.
中提到了这一点
对于使用 node foo.js
加载的脚本,您将需要手动 require()
模块以引入您实际需要的内容。对于 querystring
模块,您只需要做:
var querystring = require('querystring');
不需要npm install querystring
,因为该模块内置于节点。
我可以从脚本中使用节点 4.2.6 中的查询字符串,但我可以从节点提示符中使用。这里有一些证据。
我有以下脚本:
$ cat test.js
console.log(process.versions)
console.log(querystring)
当我 运行 时出现错误:
$ node test.js
{ http_parser: '2.5.0',
node: '4.2.6',
v8: '4.5.103.35',
uv: '1.8.0',
zlib: '1.2.8',
ares: '1.10.1-DEV',
icu: '56.1',
modules: '46',
openssl: '1.0.2e' }
/path/to/file/test.js:2
console.log(querystring)
^
ReferenceError: querystring is not defined
at Object.<anonymous> (/path/to/file/test.js:2:13)
at Module._compile (module.js:410:26)
at Object.Module._extensions..js (module.js:417:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Function.Module.runMain (module.js:442:10)
at startup (node.js:136:18)
at node.js:966:3
但是如果我在命令行中进入节点,我不会收到错误。
$ node
> console.log(process.versions)
{ http_parser: '2.5.0',
node: '4.2.6',
v8: '4.5.103.35',
uv: '1.8.0',
zlib: '1.2.8',
ares: '1.10.1-DEV',
icu: '56.1',
modules: '46',
openssl: '1.0.2e' }
undefined
> console.log(querystring)
{ unescapeBuffer: [Function],
unescape: [Function],
escape: [Function],
encode: [Function],
stringify: [Function],
decode: [Function],
parse: [Function] }
undefined
console.log() 只是为了证明——我根本不能在脚本中使用查询字符串。有什么问题吗?
节点 REPL(只需键入可执行文件名称 (node
) 即可自动加载内置模块作为全局变量,因为它们可以通过名称访问,以方便使用。文档 here.
对于使用 node foo.js
加载的脚本,您将需要手动 require()
模块以引入您实际需要的内容。对于 querystring
模块,您只需要做:
var querystring = require('querystring');
不需要npm install querystring
,因为该模块内置于节点。