簡體   English   中英

如何在我的本地node.js服務器html頁面上包含多個庫

[英]How do i include multiple libraries on my local node.js server html page

所以我有一個html頁面,上面有一些面部識別庫,它工作正常。 但是,當我將html頁面放在node.js本地服務器上時,不再包含所有圖片和javascript庫。 對於每個庫,我在html頁的第一行得到一個“ Uncaught SyntaxError:Unexpected token <”錯誤。

我試圖從如下的node.js文件中包括它們:

var app = require('http').createServer(handler)
  , io = require('socket.io').listen(app)
  , fs = require('fs') 
  , five = require("johnny-five"),
  led;


//iets met poort 80
app.listen(80);

// webserver handler 
function handler (req, res) {

  fs.readFile(__dirname + '/emotie.html',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }

    res.writeHead(200);
    res.end(data);
  });
}

function handler (req, res) {

  fs.readFile(__dirname + '/js/emotionmodel.js',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading emotionmodel.js');
    }

    res.writeHead(200);
    res.end(data);
  });
}

function handler (req, res) {

  fs.readFile(__dirname + '/js/emotion_classifier.js',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading emotionClassifier.js');
    }

    res.writeHead(200);
    res.end(data);
  });
} 

但是它仍然不起作用,並且文件路徑肯定是正確的。

您得到的錯誤是瀏覽器需要客戶端JavaScript而不是HTML時。

首先,您有兩個名為handler而實際上僅使用其中一個。 您應該考慮使用皮棉機來幫助您發現類似的問題。

另外,您正在嘗試編寫單獨的處理程序以分別處理所有單個文件-相反,您應該做的是將所有靜態內容(HTML,JS和您要提供的所有其他內容)放在一個目錄中並提供所有服務其中的文件。

如果將所有內容都放在一個名為public的目錄中,則可以使用Express來使用類似這樣的內容:

var path = require('path');
var express = require('express');
var app = express();

var dir = path.join(__dirname, 'public');

app.use(express.static(dir));

app.listen(3000, function () {
  console.log('Listening on http://localhost:3000/');
});

如果您不想使用Express,請參見以下答案以獲取更多文件提供選項:

我還注意到,您直接在端口80上偵聽,這通常意味着您以root用戶身份運行Node應用程序。 考慮以非特權用戶身份運行它,並使用反向代理在端口80上偵聽並將流量傳遞給在其他端口上偵聽的應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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