【问题标题】:Require is not recognised in NodeJS application在 NodeJS 应用程序中无法识别 Require
【发布时间】:2016-05-04 12:25:31
【问题描述】:

我已按照http://expressjs.com/en/starter/installing.html 此处的步骤安装 express NodeJS 应用程序。安装后我们移动到“myapp”目录,然后我们从https://github.com/aws/aws-iot-device-sdk-js安装了“aws-iot-device-sdk”。

在 node_modules 目录中创建了 aws-iot-device-sdk 目录。

在公共目录中,我们通过创建“index.html”的示例开始探索。在浏览器中启动 NodeJS 服务器后,我们尝试打开 http://localhost:3000,这里 index.html 屏幕被打开了。

index.html - 我们需要“aws-iot-device-sdk”来运行 AWS - IOT 应用程序的脚本标签,但这里出现以下错误。

Uncaught ReferenceError: require is not defined

下面是index.html文件的代码

<!DOCTYPE html>
<html>
<script>
function clicked(){
var awsIot = require('aws-iot-device-sdk');
    }
</script>
<body>
<input type="submit" onclick="clicked()" value="Click here to send email">
</body>
</html>

为了重定向到 index.html,我们在 app.js 中使用了以下代码

app.use(express.static('public'));

请帮助我解决这个问题。

谢谢, 拉克什·卡尔瓦。

【问题讨论】:

  • 您能否使用堆栈跟踪以及导致该错误的代码位更新您的问题?应该有行文件和行号。

标签: javascript node.js amazon-web-services express require


【解决方案1】:

aws-iot-device-sdk 模块设计为通过节点运行。

Node 有一个内置的 require 方法,但这在浏览器中本机不可用(这就是错误提示 'require is not defined' 的原因)。

为了在客户端代码中 require 模型,您需要使用模块加载器,例如 require.js

不过,在这种情况下,aws-iot-device-sdk 模块依赖意味着它将通过节点运行。

根据您要实现的目标,您可能希望在节点中实现一个可以与 AWS 模块一起使用的 API,并从您的客户端代码中调用它。

【讨论】:

  • 是的,我们尝试使用 NodeJS 应用程序在浏览器中调用 AWS API。根据您的评论,我已经安装了 npm install requirejs 并再次尝试启动 NodeJS 服务器,但同样的问题重复了。
  • 仅仅安装 require.js 并不能解决你的问题。您需要在前端应用程序中实际配置和使用它。请阅读requirejs.org/docs/start.html
  • 但是,在您的情况下,require 无关紧要 - 您需要构建一个客户端应用程序(有或没有 require.js),并使用它来调用需要 AWS 模块的节点应用程序。
  • 感谢@duncanhall,我尝试使用 requirejs 在我的节点 js 应用程序中进行配置。在这里,我尝试将 index.js 中的依赖项定义为 define(['aws-iot-device-sdk'], function(awsIot) 这里它期望 aws-iot-device-sdk 作为 .js 文件。但它是一个文件夹,我应该如何处理这种情况。 Html 屏幕在尝试加载 .js 文件时出现 Uncaught Error: Script error for "aws-iot-device-sdk", needed by: index 错误。
【解决方案2】:

经过长时间的研究,我通过在 NodeJS 应用程序中添加“ejs”解决了这个问题。现在我可以在浏览器中调用 Require 了。

现在我们可以从浏览器访问AWS-IOT

【讨论】:

  • 你能看看我的 AWS IoT 问题stackoverflow.com/questions/35823058/…
  • 感谢 Mona 的回复,但就我而言,我能够获得该区域,但我的问题是将 HTML 浏览器与 NodeJS 连接。我在 javascript 中使用 REQUIRE 的地方。
猜你喜欢
  • 2021-04-07
  • 1970-01-01
  • 2022-01-14
  • 2022-01-09
  • 2017-07-28
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多