我是一名新手,正在开发一个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设置无关。