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

安装Node.js后仍出现Uncaught ReferenceError: require is not defined错误的解决咨询

问题分析与解决

为什么会出现Uncaught ReferenceError: require is not defined?

浏览器环境本身不支持Node.js的CommonJS模块系统,require()是Node.js特有的函数,用来加载模块。你虽然安装了browserify,但并没有用它把你的Node风格代码转换成浏览器能识别的代码,直接在HTML里写require('fs'),浏览器自然不认识这个函数。

另外要重点提醒你:fs是Node.js的核心模块,浏览器里根本无法使用它来写入本地文件——浏览器出于安全沙箱限制,不允许脚本直接操作本地文件系统(比如写入/tmp/test这种路径),这是你首先要明确的误区。

正确的处理方案

如果你只是想学习browserify的使用(以浏览器兼容模块为例)

假设你要用browserify打包自定义模块或其他浏览器兼容的第三方模块,步骤如下:

  1. 把JS代码单独抽成文件,比如命名为app.js(这里用lodash举例,需先执行npm install lodash安装):

    const _ = require('lodash');
    console.log(_.join(['Hello', 'Browserify'], ' '));
    
  2. 用browserify打包代码,在终端执行:

    browserify app.js -o bundle.js
    

    这个命令会把app.js及其依赖的模块打包成一个浏览器能直接识别的bundle.js文件。

  3. 在HTML里引入打包后的文件:

    <!DOCTYPE html>
    <html>
    <head>
    </head>
    <body>
      <script src="bundle.js"></script>
    </body>
    </html>
    

如果你想在前端处理文件操作

如果你的需求是生成文件供用户下载或处理用户上传的文件,得用浏览器的File API,而不是Node.js的fs模块。比如生成一个文本文件让用户下载:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
  <button onclick="downloadFile()">下载文件</button>
  <script>
    function downloadFile() {
      const content = "Hey there!";
      const blob = new Blob([content], { type: 'text/plain' });
      const url = URL.createObjectURL(blob);
      const a = document.createElement('a');
      a.href = url;
      a.download = 'test.txt'; // 下载后的文件名
      document.body.appendChild(a);
      a.click();
      document.body.removeChild(a);
      URL.revokeObjectURL(url);
    }
  </script>
</body>
</html>

这样点击按钮就能生成并下载包含"Hey there!"的文本文件,这是浏览器环境下合法的文件操作方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 13:17:48