Używam serwera NodeJS, który używa trasy catchall do wyświetlenia pliku "index.html". W tym pliku łączę się z plikiem javascript w tym samym katalogu. Ten plik javascript nie jest poprawnie ładowany. Błąd w mojej konsoli brzmi "Uncaught SyntaxError: Nieoczekiwany token <", który po badaniu wydaje się oznaczać, że ścieżka do mojego pliku JS jest niepoprawna. Jednak plik js znajduje się w tym samym katalogu co "index.html", a ja odwołuję się do niego tak, więc co powinno być poprawne?NodeJS + Express wyświetlany plik HTML nie ładujący pliku js?
Oto mój kod
server.js
var express = require('express');
var app = express();
var config = require('./config');
var apiRouter = express.Router();
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var User = require('./app/models/User');
var jwt = require('jsonwebtoken');
var path = require('path');
//Set the public folder
app.use(express.static('/public'));
//Allows us to parse POST data.
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
mongoose.connect(config.db);
var apiRouter = require('./app/routes/api')(app, express);
app.use('/api', apiRouter);
//MEAN apps use a catchall after any routes created by Node.
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname, 'public/app/views/index.html'));
});
app.listen(1337);
console.log('Server started at ' + Date());
publiczne/app/views/index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="./test.js"></script>
<head>
<body>
<h1>Served by node + express.</h1>
</body>
</html>
publiczny/app/views/test .js
console.log('test.js loaded');
Nie powinno to być "app.use (express.static (__ dirname + '/ public'));'? –
To był problem dziękuję! Tylko brakujący __dirname. Oczywiście jestem noobem z ekspresowym :(Właśnie zacząłem się uczyć go tydzień temu. –