加载socket.io.js时Node.js“未捕获的语法错误:意外的令牌<”
Posted
技术标签:
【中文标题】加载socket.io.js时Node.js“未捕获的语法错误:意外的令牌<”【英文标题】:Node.js "Uncaught SyntaxError: Unexpected token <" when loading socket.io.js 【发布时间】:2014-07-13 08:57:45 【问题描述】:我有一个使用 node.js 和 express 框架测试 socket.io 的简单应用程序
有一些与我的应用相关的文件
文件 server.js
var express = require('express');
var env = process.env.NODE_ENV = process.env.NODE_ENV || 'development';
var app = express();
var http = require('http');
var server = http.createServer(app);
var config = require('./server/config/config')[env];
require('./server/config/express')(app, config);
/////////////////////////// Database ////////////////////////////////
require('./server/config/mongoose')(config);
/////////////////////////// Passport ////////////////////////////////
require('./server/config/passport')();
/////////////////////////// Routes ////////////////////////////////
require('./server/config/routes')(app);
/////////////////////////// Socket ////////////////////////////////
require('./server/config/socket')(server);
/////////////////////////// Port ////////////////////////////////
app.listen(config.port);
console.log("Listening on port " + config.port + '...');
文件 express.js
var express = require('express'),
stylus = require('stylus'),
passport = require('passport');
module.exports = function(app, config)
function compile(str, path)
return stylus(str).set('filename', path);
;
app.configure(function()
app.set('views', config.rootPath + '/server/views');
app.set('view engine', 'jade');
app.use(express.logger('dev'));
app.use(express.cookieParser());
app.use(express.bodyParser());
app.use(express.session(secret: 'test whiteboard unicorns'));
app.use(passport.initialize());
// using session
app.use(passport.session());
// config Stylus middleware
app.use(stylus.middleware(
src: config.rootPath + '/public',
compile: compile
));
app.use(express.static(config.rootPath + '/public', redirect : false ));
);
script.jade
script(type="text/javascript", src="/vendor/jquery/dist/jquery.min.js")
script(type="text/javascript", src="/vendor/angular/angular.js")
script(type="text/javascript", src="/vendor/bootstrap/dist/js/bootstrap.min.js")
script(type="text/javascript", src="/vendor/toastr/toastr.min.js")
script(type="text/javascript", src="/vendor/restangular/dist/restangular.min.js")
script(type="text/javascript", src="/vendor/lodash/dist/lodash.min.js")
script(type="text/javascript", src="/vendor/jquery-minicolors.min.js")
script(type="text/javascript", src="/socket.io/socket.io.js")
当我从 nodemon server.js 开始时,node.js 控制台运行得很好
[nodemon] starting `node server.js`
connect.multipart() will be removed in connect 3.0
info - socket.io started
Listening on port 3030...
但是,当我打开浏览器并测试应用程序时,我在控制台中看到错误
Uncaught SyntaxError: Unexpected token < jquery-minicolors.min.js:1
Uncaught SyntaxError: Unexpected token < socket.io.js:1
我只是不知道为什么会发生这些错误以及如何解决它们
谢谢
【问题讨论】:
您是否尝试过在您的app.use(express.static(..));
之后明确添加 app.use(app.router);
?另外,config.rootPath + '/public/socket.io/socket.io.js'
存在吗?
【参考方案1】:
这意味着 jquery-minicolors.min.js 实际上是一个 html 文档。确保路线正确。
您在 socket.io.js 上遇到了同样的错误,请确保当您点击“localhost:3030/socket.io/socket.io.js”时您确实得到了一些东西。
无论哪种方式,“意外的
【讨论】:
谢谢Brian,根据你的建议,我改用socket-io.client script(type="text/javascript", src="/vendor/socket.io-client/dist/socket .io.min.js") 而不是 script(type="text/javascript", src="/socket.io/socket.io.js") 现在出现错误“Uncaught SyntaxError: Unexpected token 修改 jquery-mincolors 的正确路径后,现在错误已修复【参考方案2】:我正在使用 VS 2017 IDE 在浏览器上运行使用 JQuery Html 和 Css 构建的应用程序。该应用无法使用 Chrome 旋转轮运行。
我取消选中下面的复选框,应用程序开始运行。 有一天它可能会对某人有所帮助。
【讨论】:
【参考方案3】:我在使用 node.js 设置服务器时也遇到了这个错误。问题是在 server.js 文件中,我在创建服务器之前使用 http 参数初始化了 socket.io 库。
原来如此
var http = require('http');
const io = require('socket.io', 'net')(http);
http.createServer(function(res,req)
...
);
更正为:
var http = require('http').createServer(handler);
const io = require('socket.io', 'net')(http);
【讨论】:
以上是关于加载socket.io.js时Node.js“未捕获的语法错误:意外的令牌<”的主要内容,如果未能解决你的问题,请参考以下文章
未找到 Socket.io.js(node.js + express + socket.io)
Node.js socket.io.js 未找到或 io 未定义