我正在尝试将Node.js与Amazon AWS一起使用,当我尝试声明一个aws实例时,我不断返回undefined。此外,当我尝试要求一个常见的模块,如http,终端也返回undefined。 当我尝试执行我的实际脚本时会发生这种情况。
终端代码段:
User$ node
> var aws=require('aws-sdk')
undefined
> var web =require('http')
undefined
答案 0 :(得分:7)
您所看到的不是require(...)
的返回值,只是因为那不是您键入的内容。
您正在观察声明var aws = require('aws-sdk')
的结果。并且该语句是带赋值的变量声明,具有“未定义的值”。如果您检查aws
变量中存储的内容,您将看到它未定义,它包含require(...)
调用返回的模块。
试试这个:
var x = 2
您还会看到undefined
。你知道“2”肯定不是“未定义”。
现在,试试这个:
require('aws-sdk')
(或任何其他模块,例如http
;请注意,这只需要模块,而不是将其分配给任何变量)您将在REPL中看到正在打印的模块。
最后,试试这个:
var aws = require('aws-sdk')
aws
这会将aws
变量的值打印到REPL中。该值是require(...)
调用返回的值。而且你会发现它绝对不是“未定义的”。
这是Node.js在任何平台上的精确预期行为(即,您观察到的与您在AWS上运行Node的事实完全无关;您可以在笔记本电脑上运行它,无论您拥有什么操作系统,你会看到完全相同的行为。)