You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

浏览器端JS写入文本文件失败:require未定义错误求解决

问题原因分析

你的代码报错核心原因是浏览器环境和Node.js环境完全独立:

  • require()是Node.js专属的模块加载语法,浏览器原生JS环境没有这个函数,所以会抛出ReferenceError。
  • fs模块是Node.js提供的文件系统操作模块,仅能在Node.js运行环境(本地终端/服务器)中使用,浏览器出于安全限制,不允许前端JS直接读写本地文件。
正确实现方案

要实现用户输入数据保存到文件的需求,需要拆分**前端(浏览器)和后端(Node.js)**两部分:

1. 搭建Node.js后端接口

首先创建一个简单的后端服务,接收前端发送的数据并写入文件:

  • 先初始化项目并安装依赖:
npm init -y
npm install express cors
  • 创建server.js文件,编写后端逻辑:
const express = require('express');
const cors = require('cors');
const fs = require('fs');
const app = express();

// 允许跨域请求(前端和后端端口不同时需要)
app.use(cors());
// 解析JSON格式的请求体
app.use(express.json());

// 处理登录数据的POST接口
app.post('/save-login', (req, res) => {
    const { email, password } = req.body;
    const content = `email: ${email}\npassword: ${password}\n\n`;

    // 追加写入文件(避免覆盖原有数据)
    fs.appendFile('info.txt', content, (err) => {
        if (err) {
            console.error(err);
            return res.status(500).send('保存失败');
        }
        res.send('数据保存成功');
    });
});

// 启动服务,监听3000端口
app.listen(3000, () => {
    console.log('后端服务运行在http://localhost:3000');
});

2. 修改前端JS代码

把原来直接操作文件的逻辑改成向后端发送请求:

let email = document.querySelector(".txt");
let password = document.querySelector(".pass");
let log_btn = document.querySelector("button");

log_btn.addEventListener("click", async () => {
    let mail = email.value;
    let pass = password.value;

    try {
        // 向后端接口发送数据
        await fetch('http://localhost:3000/save-login', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify({ email: mail, password: pass }),
        });
        window.location.href = "index2.html";
    } catch (err) {
        console.error('请求失败:', err);
        alert('登录数据保存失败,请重试');
    }
});

3. 运行项目

  • 启动后端服务:node server.js
  • 打开前端页面,输入邮箱密码点击按钮,数据就会通过后端写入info.txt文件。
重要注意事项
  • 密码安全:绝对不要明文存储用户密码,实际项目中应该用bcrypt等库对密码进行哈希处理后再存储。
  • 跨域问题:如果前端和后端运行在不同端口/域名,需要在后端配置CORS(上面代码已经包含)。
  • 生产环境:实际部署时要添加接口参数校验、错误处理、日志记录等安全和稳定性措施。

内容的提问来源于stack exchange,提问作者Milad Bannourah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 20:05:26