我可以从脚本中使用 Node 4.2.6 中的查询字符串,但我可以从 Node 提示中使用。这里有一些证据。

我有以下脚本:

$ 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 ,则不会收到错误消息。
$ 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() 只是为了证明——我根本不能在脚本中使用查询字符串。可能有什么问题?

最佳答案

Node REPL(只需键入可执行文件名称 ( node ) 即可获得)自动将内置模块加载为全局变量,因为它们可以通过名称进行访问,以方便使用。 here 文档中提到了这一点。

对于使用 node foo.js 加载的脚本,您需要手动 require() 模块以获取您实际需要的内容。对于 querystring 模块,您只需要执行以下操作:

var querystring = require('querystring');

无需 npm install querystring,因为该模块内置于 node.js 中。

关于node.js - 仅在脚本中未定义的 Node 查询字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35352432/

10-11 06:24
查看更多