私はnodeJsアプリケーションを開発していて、browsifyを使用してbundle.jsというファイルにバンドルしており、Nginxで展開したいと考えています。 index.html(下記参照)の中のbundle.jsへの参照を与えましたが、正しい方法はわかりません。 nginx.confファイルは次のとおりです。Nginx ServerでNodeJsアプリケーションをホストするために使用
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ファイルはフォルダnode_server HTM \に配置されていると私はhttp://localhost:8056のようにポート8056をヒットしようとしています。しかし、エラーを表示:
Uncaught TypeError: Cannot read property 'prototype' of undefined in the bundle.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>
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];
}
};
`
何か不足していますか? 詳細が必要な場合は、親切にコメントしてください。
こんにちはTomahaug、ありがとうございます。私のnodeJsファイル(質問を編集)を見てください(これは実際に私の2番のアプリケーションのサーバー側です)。私は急行を使っていたので、私はそこで何かひどく間違ったことをしたと思う。では、Expressの代わりにhttpサーバーを使用する必要がありますか?または私は表現を使うことができる方法はありますか? – Amal
こんにちは、私は、編集されている答えのbundle.jsファイルの失敗した行にコンテキストを追加しました。 – Amal
こんにちは、私の遅い返事を申し訳ありません。 node.jsのhttpライブラリをブラウザにバンドルしようとしているようです。これはできません。 httpライブラリはサーバー側のライブラリであり、クライアント(ブラウザ)での使用はありません。 jsファイルのバンドルと最適化は、(一般的に)クライアント側のJavaScriptに対してのみ行われ、サーバー側のJavaScriptでは行われません。したがって、Node.jsサーバーを実行するために何もバンドルする必要はありません。 これは意味がありますか? – tomahaug