【问题标题】:Express can't find my node modules after update to 3.xExpress 更新到 3.x 后找不到我的节点模块
【发布时间】:2013-09-29 08:02:11
【问题描述】:

我的 Jade 模板中曾经有以下一段代码:

script(src='lib/angular/angular.js')
script(src='/socket.io/socket.io.js')
script(src='js/app.js')
script(src='js/services.js')
script(src='js/controllers.js')
script(src='js/filters.js')
script(src='js/directives.js')

除了 socket.io 之外的所有内容都会加载。更新到 3.x 后,它没有正确加载,给我 'Uncaught SyntaxError: Unexpected token

<!DOCTYPE html><html ng-app="myApp"><head><meta charset="utf8"><base href="/"><title>Angular Socket.io IM Demo App</title><link rel="stylesheet" href="/css/app.css"></head><body><h1>Angular Socket.io IM Demo App</h1><div ng-controller="AppCtrl"><div class="col"><h3>Messages</h3><div class="overflowable"><p ng-repeat="message in messages" ng-class="{alert: message.user == &quot;chatroom&quot;}">{{message.user}}: {{message.text}}</p></div></div><div class="col"><h3>Users</h3><div class="overflowable"><p ng-repeat="user in users">{{user}}</p></div></div><div class="clr"><form ng-submit="sendMessage()">Message:<input size="60" ng-model="message"><input type="submit" value="Send"></form></div><div class="clr"><h3>Change your name</h3><p>Your current user name is {{name}}</p><form ng-submit="changeName()"><input ng-model="newName"><input type="submit" value="Change Name"></form></div></div><script src="lib/angular/angular.js"></script><script src="/socket.io/socket.io.js"></script><script src="js/app.js"></script><script src="js/services.js"></script><script src="js/controllers.js"></script><script src="js/filters.js"></script><script src="js/directives.js"></script></body></html>

这只是编译后的索引页...

我是 Express 的新手,现在不知道如何让它识别我的 node_modules。任何帮助表示赞赏。

server.js

/**
 * Module dependencies.
 */

var express = require('express'),
    app = express(),
    path = require('path'),
    routes = require('./app/routes'),
    http = require('http'),
    socket = require('./app/routes/socket.js'),
    server = http.createServer(app);

// Hook Socket.io into Express
var io = require('socket.io').listen(server);

// Configuration

app.configure(function(){
  app.set('views', __dirname + '/app/views');
  app.set('view engine', 'jade');
  app.set('view options', {
    layout: false
  });
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.static(__dirname + '/public'));
  app.use(app.router);
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.configure('production', function(){
  app.use(express.errorHandler());
});

// Routes

app.get('/', routes.index);
app.get('/partials/:name', routes.partials);

// redirect all others to the index (HTML5 history)
app.get('*', routes.index);

// Socket.io Communication

io.sockets.on('connection', socket);

// Start server

app.listen(3000);

【问题讨论】:

  • 旁白:你有一个重复且不必要的 socket.io.js 的第二个脚本标签。

标签: node.js express pug


【解决方案1】:

app.listen(3000); 更改为server.listen(3000);。 express/http/socket.io 集成样板很棘手,很容易在不注意的情况下复制pasta。

【讨论】:

    猜你喜欢
    • 2022-12-15
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 2019-07-26
    • 1970-01-01
    • 2018-01-27
    相关资源
    最近更新 更多