node.js アプリケーションに問題があります。パッケージconnection、connection-route、socket.io、およびejsを使用しています。
私のアプリケーションは、(socket.io 経由で接続された) html ページに情報を提供します。これらの情報は、ejs テンプレートによって管理されます。のようなパラメータで目的地に到達すると、http://localhost:5001/machine/:id2
奇妙なことが起こります。接続ルート コードは次のとおりです。
router.get('/machine/:mac_id', function (req, res, next) {
var mac_index = req.params.mac_id.slice(1,req.params.mac_id.length);
console.log(mac_index);
res.writeHead(200, { 'Content-Type': 'text/html' });
var str = mod_fs.readFileSync(mac_route + '/index.html', 'utf8') ;
var ret = mod_ejs.render(str, {
filename: mac_route,
title: "Machine Overview",
/* other informations */
});
res.end(ret);
}
変数には、正しくロードされmac_route
たファイルへのパスが含まれています。index.html
問題はmac_index
変数にあります。コンソールには 3 つの行が表示されます。
id2
unctions.js
query-1.9.1.js
最初の行は明らかに正しく、最後の 2 行は明らかに正しくありません。実際、これらは 2 つの JavaScript ファイル (私functions.js
のファイルと jquery のファイルjquery-1.9.1.js
) です。これらのファイルは、index.html ファイルのヘッダーに含まれています。
HTML 構造:
header.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> <%= title %> </title>
<link rel='stylesheet' href='/style.css' type="text/css"/>
<script src="http://localhost:5001/socket.io/socket.io.js"></script>
<script language="javascript" type="text/javascript" src="functions.js"></script>
<script language="javascript" type="text/javascript" src="jquery-1.9.1.js"></script>
</head>
<body>
<div id="header">
...
</div>
<div id="page">
index.html
<% include /header.html %>
<div id="commands">
...
</div>
<div id="main">
... code of the page, manage informations received ...
</div>
<% include /footer.html %>
footer.html
<div id="footer">
...
</div>
</div> <!-- Close the "page" div opened in the header //-->
</body>
</html>
どこが間違っているのかわかりません。ファイルの名前がreq
オブジェクトのパラメーターとして使用されるのはなぜですか?