我是一名新手,正在开发一个nodeJs应用程序,并已使用browsify将其捆绑到文件bundle.js中,并希望将其部署在Nginx中。
我已经在index.html(如下所示)中给出了bundle.js的引用,我不确定这是正确的方法。
nginx.conf文件是:

server {

    listen 8056;
    root html/node_server;
    index index.html index.htm;
    server_name localhost;
    location / {
        try_files $uri $uri/ /index.html;
    }
    }


index.html文件和bundle.js文件放置在htm \ node_server文件夹中,我正在尝试像http://localhost:8056一样访问8056端口。但显示错误:


  Uncaught TypeError:无法读取bundle.js中未定义的属性“ prototype”:78869


在浏览器控制台中,但在Nginx错误日志中没有任何内容。

bundle.js:78869是

`/**
 * Request prototype.
 * @public
 */

var req = Object.create(http.IncomingMessage.prototype)`


我的index.html文件是:

<!doctype html>
<html>

  <meta charset="utf-8">
  <title>DEV</title>
  <base href="/">

<body>

<script type="text/javascript" src="bundle.js"></script>
</html>


NodeJs文件:

   var sql = require("mssql");
 var express = require('express');
 var http = require("http");
 var bodyParser = require('body-parser');
 var jwt = require('jsonwebtoken');
var app = express();
app.use(bodyParser.json());
app.use(function (req, res, next) {
    //Enabling CORS
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, contentType,Content-Type, Accept, Authorization");
    next();
});
app.get('/',function(req,res){
res.send('Working');
});


Bundle.js更详细:

`/**
 * Module dependencies.
 * @private
 */

var accepts = require('accepts');
var deprecate = require('depd')('express');
var isIP = require('net').isIP;
var typeis = require('type-is');
var http = require('http');
var fresh = require('fresh');
var parseRange = require('range-parser');
var parse = require('parseurl');
var proxyaddr = require('proxy-addr');

/**
 * Request prototype.
 * @public
 */

var req = Object.create(http.IncomingMessage.prototype) ---- Error here

/**
 * Module exports.
 * @public
 */

module.exports = req

/**
 * Return request header.
 *
 * The `Referrer` header field is special-cased,
 * both `Referrer` and `Referer` are interchangeable.
 *
 * Examples:
 *
 *     req.get('Content-Type');
 *     // => "text/plain"
 *
 *     req.get('content-type');
 *     // => "text/plain"
 *
 *     req.get('Something');
 *     // => undefined
 *
 * Aliased as `req.header()`.
 *
 * @param {String} name
 * @return {String}
 * @public
 */

req.get =
req.header = function header(name) {
  if (!name) {
    throw new TypeError('name argument is required to req.get');
  }

  if (typeof name !== 'string') {
    throw new TypeError('name must be a string to req.get');
  }

  var lc = name.toLowerCase();

  switch (lc) {
    case 'referer':
    case 'referrer':
      return this.headers.referrer
        || this.headers.referer;
    default:
      return this.headers[lc];
  }
};
`


我想念什么吗?
如果需要更多详细信息,请发表评论。

最佳答案

我误解了您的问题,因此删除了以前的答案。

看来问题是http库不适合浏览器。换句话说,您的bundle.js文件中有一些JavaScript无法在Web浏览器中运行。

您能否为bundle.js文件中的失败行提供一些上下文?

这个问题似乎与您的node.js / nginx设置无关。

10-07 13:12
查看更多