Node.js require() 总是返回未定义的

Node.js require() returns undefined always?

本文关键字:返回 未定义 js require Node      更新时间:2023-09-26

我正在尝试将 Node.js 与 Amazon AWS 一起使用,当我尝试声明一个 aws 实例时,我总是返回未定义。此外,当我尝试要求一个通用模块(例如 http(时,终端也会返回未定义。当我尝试执行实际脚本时,会发生这种情况。

终端代码段:

User$ node
> var aws=require('aws-sdk')
    undefined
> var web =require('http')
undefined

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