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

Moh*_*d B 1 javascript node.js

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

终端片段:

User$ node

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

> var web =require('http')
undefined
Run Code Online (Sandbox Code Playgroud)

Bru*_*eis 8

您所看到的不是返回值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的事实完全无关;您可以在您的笔记本电脑上运行它,无论您拥有什么操作系统,而且您' d看到完全相同的行为).