![](/img/trans.png)
[英]Printing a HTML + JavaScript variable from an external js to an index.html file using fetch + node.js
[英]node.js index.html javascript function not defined
我有一個“ index.html ”頁面,該頁面引用了我的JavaScript文件“ bargraph1.js ”,該文件與index.html處於同一目錄中。 在html文件中,我在該js頁面中調用了一個函數:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>D3 Test</title>
<script type="text/javascript" src="d3.v4/d3.js"></script>
<script type="text/javascript" src="bargraph1.js"></script>
</head>
<body>
<h2>BarGraph</h2>
<script type="text/javascript">
barGraph(null, null, null, 30);
</script>
</body>
</html>
文件bargraph1.js包含一個函數' barGraph() ',該函數使用d3渲染條形圖。
如果我在瀏覽器中使用“文件打開”功能打開該文件,則它在瀏覽器錯誤控制台中的呈現效果很漂亮,沒有任何錯誤。
但是,如果我嘗試從Node.js服務器提供頁面,則條形圖不會出現,控制台會顯示“ barGraph not defined ”。 不過,確實會出現在它前面的h2標頭。 (實際上,當服務器提供服務時,我認為它無法在任何引用的.js文件中找到任何內容)。 這是服務器代碼:
var app = require ('express')();
var http = require ('http').Server(app);
var io = require ('socket.io')(http);
var pagePath = __dirname + '/index.html';
console.log('sending page ' + pagePath + '\'');
app.get ('/', function(req, res) { res.sendFile(pagePath); });
io.on ('connection', function(socket) {
console.log ('\nsocket.id ' + socket.id + ' connected');
socket.on ('disconnect', function() {
console.log ('\nsocket.id ' + socket.id + ' disconnected');
});
});
//===================================================
// set HTTP server to listen on port 3001
//===================================================
http.listen (3001, function() {
console.log(' (3) http listening on *:3001 ');
});
所以-顯然,通過兩種不同的方式來顯示帶有javascript的html頁面,如何解決問題(路徑?)存在一些不同。 我已經在瀏覽器本地打開的文件中多次使用了相同的bargraph1.js文件,因此我確信其中沒有語法錯誤。
如何獲得此文件及其包含的功能以與Node.js服務器一起使用?
謝謝
您需要為<script>
標記內的URL創建路由。 否則,當瀏覽器請求這些腳本文件時,它將從節點服務器獲取404(僅雙擊HTML文件不會發生這種情況,因為您的計算機會使用目錄作為URL路徑自動提供這些文件)。 由於您現在正在使用Express,因此請嘗試運行
app.use(express.static(path.resolve(__dirname, '/')));
然后最后,而不是執行http.listen
,運行
app.listen(3001, process.env.IP || "0.0.0.0", function() {
console.log(' (3) http listening on *:3001 ');
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.