Ich betreibe einen NodeJS-Server, der eine Catchall-Route verwendet, um eine Datei 'index.html' bereitzustellen. In dieser Datei verlinke ich zu einer Javascript-Datei im selben Verzeichnis. Diese Javascript-Datei wird nicht korrekt geladen. Der Fehler in meiner Konsole lautet 'Uncaught SyntaxError: Unexpected Token <', was nach der Untersuchung bedeutet, dass der Pfad zu meiner JS-Datei falsch ist. Die js-Datei befindet sich jedoch im selben Verzeichnis wie 'index.html', und ich verweise darauf wie folgt, was sollte korrekt sein?NodeJS + Express-HTML-Datei nicht geladen js-Datei?
Hier ist mein Code
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());
public/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>
public/app/views/Test .js
console.log('test.js loaded');
Sollte das nicht "app.use (express.static (__ dirname + '/ public')) sein;'? –
Das war das Problem, danke! Nur der fehlende __dirname. Offensichtlich bin ich ein Anfänger mit Express :(Habe gerade angefangen, es vor einer Woche zu lernen. –