Это сработало для меня:
/* 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!'))
Вот как выглядит моя структура каталогов (посмотрите на левую панель):

Файл 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
загружается правильно:

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