Ошибка доступа к JS с сервера узла - PullRequest
0 голосов
/ 07 мая 2018

Я новичок в nodejs, прошу прощения. Я создал серверное приложение js для узла, и html обслуживался с использованием expressjs следующим образом

app.use(express.static( 'public/js'));
app.use(express.static( 'public/css'));
app.use(express.static( 'public/img'));

res.sendFile(path.join(__dirname +  "/public" + "/login.html"));

на стороне клиента JS был включен в заголовок как

<script src="fingerprint.js" type="text/javascript"></script>

Встроенный JS в теге body:

var bid = new Fingerprint();
document.getElementById('bid').value = bid.get();
console.log("----"+bid.get());
document.write('Hello');

Здесь, если я запускаю этот HTML с сервера узлов, встроенный JS не работает, где, как будто я запускаю в файловом режиме, т.е. file: ///login.html все работает нормально.

1 Ответ

0 голосов
/ 07 мая 2018

Это сработало для меня:

/* jshint ignore:start */
// app.js
const express = require('express');
const app = express();
const path = require('path');

app.use(express.static(__dirname + "/public"));

// Root path redirect
app.get('/', (req, res) => {
    res.sendFile(path.join(__dirname + "/public" + "/login.html"));
});

app.listen(3000, () => console.log('Example app listening on port 3000!'))

Вот как выглядит моя структура каталогов (посмотрите на левую панель): VS Code Screenshot

Файл HTML:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="/js/fingerprint.js"></script>
</head>

<body>
    <!-- HTML Content  -->
    <div id="bid"></div>
    <!-- Inline JS -->
    <script>
        var bid = new Fingerprint();
        document.getElementById('bid').value = bid.get();
        console.log("The Bid Value: " + bid.get());
        // document.write('Hello');
    </script>
</body>

</html>

Наконец, файл fingerprint.js:

/* jshint ignore:start */
class Fingerprint {
    get() {
        return 2;
    }
}

Я вижу, что объект Fingerprint загружается правильно:

Chrome Dev Tools

Дайте мне знать, если это работает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...