【问题标题】:Node.js require() returns undefined always?Node.js require() 总是返回未定义?
【发布时间】:2016-02-14 17:03:28
【问题描述】:

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

终端片段:

User$ node

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

> var web =require('http')
undefined

【问题讨论】:

  • 仅供参考 @NoyGabay - 如果依赖项不存在,错误会非常不同

标签: javascript node.js


【解决方案1】:

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

【讨论】:

  • 我遇到了类似的问题(我认为)。我的 Node 服务器 var jwt = require("jsonwebtoken"); 需要一个外部库。但是当我尝试访问jwt 时,它说它没有定义。可能与"use strict;" 影响外部功能有关,但对解决方法有什么想法吗?
  • @Qasim - 根据您非常简短的描述,您的问题似乎与 OP 不同。我建议您针对您的问题提出一个具体问题,包括详细信息和一些重现问题的代码。
  • 谢谢@BrunoReis,我刚刚做了(包括我的代码)stackoverflow.com/questions/47406325/…
猜你喜欢
  • 2022-01-14
  • 2019-05-21
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多