Node.js require()总是返回undefined?
我正在尝试与Amazon AWS使用Node.js,当我尝试声明一个aws实例时,我一直得到未定义的返回值。 另外当我尝试要求一个普通的模块,如http,terminal也返回undefined。 当我尝试执行我的实际脚本时,会发生这种情况。
terminal片段:
User$ node > var aws=require('aws-sdk') undefined > var web =require('http') undefined
你所看到的不是require(...)
的返回值,只是因为这不是你input的内容。
您正在观察声明的结果, var aws = require('aws-sdk')
。 那个声明,一个赋值的variables声明,有一个“未定义的值”。 如果你检查aws
variables中存储的内容,就会发现它不是未定义的,它包含了require(...)
调用返回的模块。
尝试这个:
- 开始节点
- 键入
var x = 2
你还会看到undefined
。 而且你知道“2”绝对不是“未定义的”。
现在,试试这个:
- 开始节点
- 键入
require('aws-sdk')
(或任何其他模块,如http
;请注意,这只是要求模块,而不是将其分配给任何variables)
您将看到正在REPL中打印的模块。
最后,试试这个:
- 开始节点
- types
var aws = require('aws-sdk')
- types
aws
这将把aws
variables的值打印到REPL中。 这个值就是require(...)
调用返回的值。 你会发现它绝对不是“未定义的”。
这是Node.js在任何平台上的精确预期行为(也就是说,你所观察到的与你在AWS上运行Node的事实完全无关;你可以在你的笔记本电脑上运行它,无论你有什么操作系统, d看到完全相同的行为)。