【问题标题】:Require is not defined after installed nodejs安装 nodejs 后未定义要求
【发布时间】:2022-02-19 22:36:17
【问题描述】:

首先我从link 下载了 node js。

然后我安装了 browserify npm install -g browserify

然后我安装了fs npm install fs

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
const fs = require('fs');
fs.writeFile("/tmp/test", "Hey there!", function(err) {
    if(err) {return console.log(err);}
    console.log("The file was saved!");
});
</script>
</body>
</html>

我收到以下错误:

Uncaught ReferenceError: require is not defined
    at index.html:12:12

为什么 require 仍然没有定义?我该怎么做才能使代码可执行?

【问题讨论】:

  • 不仅在浏览器环境中没有定义 require,Node 的库(包括 fs)也没有。

标签: javascript node.js


【解决方案1】:

Node.js 是运行 JavaScript 的独立环境。它不是浏览器扩展。

要运行 Node.js 代码,请将其保存在带有 .js 文件扩展名的文件中,然后运行它:

node yourFile.js

如果您希望 Node.js 代码和浏览器代码进行交互,那么典型的方法是在 Node.js 中编写一个托管 Web 服务的服务器。 Express.js 是一种流行的方式来做到这一点。然后,您可以使用 Ajax 向该 Web 服务发出 HTTP 请求。

对于双向通信(与 Ajax 的请求/响应相对),请查看 Socket.io。


我只想让它成为本地存储,所以我不想在用户之间共享数据,我只想与自己的本地存储数据进行交互。

如果你想使用浏览器提供的localStorage API,那就这样做吧。

localStorage 不需要 Node.js。它不需要 Node.js 中内置的 fs 模块。它不需要 CommonJS 模块规范中的 require 方法。

您不能通过在浏览器中运行的代码在用户的文件系统上随意乱搞。那将是一个巨大的安全问题。

【讨论】:

    【解决方案2】:

    您不能在浏览器环境中使用节点 API;更具体地说,浏览器不允许脚本直接与 Node.js 等文件 API 交互。

    要么像昆汀说的那样在节点中运行你的代码,要么使用browser file api

    【讨论】:

      猜你喜欢
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      • 2020-12-26
      • 2016-04-16
      • 1970-01-01
      • 2018-11-02
      相关资源
      最近更新 更多