首页 > 解决方案 > bundle.js 中的“未捕获的 TypeError:无法读取未定义的属性‘原型’”错误

问题描述

我正在尝试构建一个简单的 node.js 应用程序。节点端运行良好,但浏览器无法识别 require 函数。为了解决这个问题,我正在使用 Browserify。我安装了 Browserify 并运行了“browserify index.js -o bundle.js”命令。但是当我运行浏览器端时,我在 bundle.js 中得到“未捕获的类型错误:无法读取未定义的属性“原型”错误。错误出现在 bundle.js 的以下行中。

var res = Object.create(http.ServerResponse.prototype)

无论我尝试什么,我都无法解决这个问题,所以我准备放弃。任何帮助将不胜感激。

我的 index.js 如下:

const express = require('express');
const app = express();  
const path = require('path');
const bodyParser = require('body-parser');
const cors = require('cors');
const port = 3000;  //Set port to 3000. 
app.use( bodyParser.json() );  // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({  // to support URL-encoded bodies
  extended: true})); 
app.use(cors());

在我的 index.html 中,我包含以下内容。

<script src="bundle.js"></script>
<script src="index.js"></script>

标签: javascriptnode.jsgoogle-chromebrowserify

解决方案


Browersify 可以转换 JavaScript 以消除浏览器支持模块系统的需要,尽管它不能“填充”NodeJS 可用的库和框架,例如。express像您使用该模块一样运行HTTP服务器。那些需要适当的 NodeJS 运行时并且不能在简单的浏览器下运行。

浏览器旨在连接到 Web 服务器,而不是 Web 服务器本身!
浏览器的安全限制不允许打开 TCP 端口。我的建议:express在 Node.js 运行时将服务器作为单独的进程运行,并使用异步 JavaScript 和 XML (AJAX)与其通信。


推荐阅读