javascript - 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>
解决方案
Browersify 可以转换 JavaScript 以消除浏览器支持模块系统的需要,尽管它不能“填充”NodeJS 可用的库和框架,例如。express
像您使用该模块一样运行HTTP服务器。那些需要适当的 NodeJS 运行时并且不能在简单的浏览器下运行。
浏览器旨在连接到 Web 服务器,而不是 Web 服务器本身!
浏览器的安全限制不允许打开 TCP 端口。我的建议:express
在 Node.js 运行时将服务器作为单独的进程运行,并使用异步 JavaScript 和 XML (AJAX)与其通信。