Node.js 用于托管NodeJs应用程序的Nginx服务器
我是一个开发nodeJs应用程序的新手,已经使用browsify将其绑定到文件bundle.js中,并希望在Nginx中部署它。 我已经在index.html(如下所示)中引用了bundle.js,我不确定这样做是否正确。 nginx.conf文件是:Node.js 用于托管NodeJs应用程序的Nginx服务器,node.js,nginx,deployment,Node.js,Nginx,Deployment,我是一个开发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; locati
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_服务器文件夹中,我正在尝试访问端口8056。但显示错误:
未捕获的TypeError:无法读取bundle中未定义的属性“prototype”。js: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>
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设置无关。在服务器本地启动node.js应用程序并将nginx配置为反向代理不是更好吗? 下面是如何执行此操作的详细教程:
你好,托马豪格,谢谢。请参阅我的nodeJs文件(编辑了这个问题)(实际上是angular 2应用程序的服务器端)。我想我在使用express时犯了严重的错误。那么我们必须使用http服务器而不是express吗?或者我可以使用express吗?您好,我已经在已编辑的答案中的bundle.js文件的失败行中添加了上下文。您好,Amal,很抱歉我的回复太晚了。似乎您正试图将node.js http库绑定到浏览器,但这是无法做到的。http库是服务器端库,在客户端(浏览器)中没有任何用途。绑定和优化js文件(通常)仅适用于客户端JavaScript,而不是服务器端JavaScript。因此,运行Node.js服务器不需要捆绑任何东西。这有意义吗?您好,您的意思是,我必须在系统中的express服务器上启动node.js应用程序,并将nginx用作反向服务器?
`/**
* 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];
}
};
`