Node.js require()总是返回undefined?

时间:2016-02-14 08:53:19

标签: javascript node.js

我正在尝试将Node.js与Amazon AWS一起使用,当我尝试声明一个aws实例时,我不断返回undefined。此外,当我尝试要求一个常见的模块,如http,终端也返回undefined。 当我尝试执行我的实际脚本时会发生这种情况。

终端代码段:

User$ node

> var aws=require('aws-sdk')
    undefined

> var web =require('http')
undefined

1 个答案:

答案 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的事实完全无关;您可以在笔记本电脑上运行它,无论您拥有什么操作系统,你会看到完全相同的行为。)