节点查询string不在脚本中定义

我可以在脚本中使用节点4.2.6中的querystring,但是我可以从节点提示符处。 这是一些证据。

我有以下脚本:

$ 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()只是为了certificate – 我不能在脚本中使用查询string。 什么可能是错的?

节点REPL(只input可执行文件名( node )时得到的)会自动加载内置模块作为全局variables,因为它们是按名称访问的。 这在这里的文档中提到。

对于使用node foo.js加载的脚本,您需要手动node foo.js require()模块来获取实际需要的内容。 querystring模块,你只需要做:

 var querystring = require('querystring'); 

由于模块内置于节点,因此不需要npm install querystring