Javascript 未捕获类型错误:fs.writeFile不是函数

Javascript 未捕获类型错误:fs.writeFile不是函数,javascript,node.js,parceljs,Javascript,Node.js,Parceljs,我得到一个错误uncaughttypeerror:fs.writeFile不是我程序中的一个函数,我只想在JSON文件中写入一些东西。fs.readFileSync函数可以正常工作,但由于某些原因,fs.writeFile不能正常工作。这是我的密码: HTML: JSON: 只是想让你们知道,我用包裹作为我的捆包机。请帮助我解释为什么这不起作用。您将无法在浏览器中使用writeFile,即使您使用捆绑程序,因为这是Node.js而不是浏览器API。Bundler不会在浏览器的构建中嵌入原生Nod

我得到一个错误
uncaughttypeerror:fs.writeFile不是我程序中的一个函数
,我只想在JSON文件中写入一些东西。
fs.readFileSync
函数可以正常工作,但由于某些原因,
fs.writeFile
不能正常工作。这是我的密码:

HTML:

JSON:


只是想让你们知道,我用包裹作为我的捆包机。请帮助我解释为什么这不起作用。

您将无法在浏览器中使用
writeFile
,即使您使用捆绑程序,因为这是Node.js而不是浏览器API。Bundler不会在浏览器的构建中嵌入原生Node.js函数,因为这是两种不同的执行环境


在浏览器中,未经用户同意,您无法在磁盘上任意触发文件写入,因此您必须实际触发文件下载。

Node.js
fs
模块不是用JavaScript编写的。它是用C/C++编写的Node.js的核心部分。它不会在web浏览器中运行,也不能绑定到JS文件中

(注意,
readFileSync
可以是,它只是在绑定文件时读取文件,而不是在运行时读取)

如果要生成JSON文件,则可以:

  • 编写web服务(将JSON写入服务器上的文件),然后向其发出HTTP请求或
  • 将数据转换为(以便保存到用户的下载文件夹)

您不应该具有浏览器的写入权限。因此,我希望在浏览器中运行的
fs
可能会删除所有的写入方法。“这是Node.js,不是浏览器API。”但是
readFile
调用成功。因此,无论这是什么库,它都存在于浏览器环境中。但我不知道会是哪一个。可能只是做一个GET让一个文件“读取”它。最好是编辑这个文件并进入更详细的内容。我不想生成JSON文件,我想修改我已经创建的现有文件,例如通过添加或删除其中的元素。您建议的第一个选项可以使用,但我的主机类型没有提供相应的功能。除非您的第二个建议意味着我可以访问文件、修改和删除其中的元素,否则我需要更多的操作。@DG27-如果您需要更改服务器上的数据,那么您需要支持它的主机。我希望尽可能减少后端基础设施。如果有帮助,这里有一个链接,指向我的文件夹结构的照片。希望你能理解我的目的-。请告诉我关于第二个建议的更多信息。将文件的修改副本放在最终用户的计算机上将无法满足您编辑已有文件的要求。
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <h1>Hello World!</h1>
    <button id="button">Write Something</button>
    <script src="./app.js"></script>
  </body>
</html>
const fs = require("fs");
const data = fs.readFileSync("db.json", "utf8");
const db = JSON.parse(data);

console.log(db);

document.getElementById("button").onclick = () => {
  fs.writeFile("db.json", "test", () => {
    console.log("Written file!");
  });
};

["something1", "something2"]