簡體   English   中英

未定義node.js index.html javascript函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM