节点app.js导致"窗口未定义"

时间:2017-05-05 22:27:18

标签: javascript node.js terminal socket.io

根据this Stack Overflow post中的研究,我了解这与在浏览器中定义的window而不是node中的定义有关。但是,我并不完全清楚如何纠正这种情况。我的目标是启动我的服务器,这样我就可以预览我建立的网站(并确保它看起来不错)。

这是我的app.js文件:

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

server.listen(80);

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

io.on('connection', function (socket) {
  socket.emit('answers', { hello: 'world' });
  socket.on('gum', function (data) {
    console.log(data);
});
});

angular.module('NoteWrangler', ['ngRoute', 'ngResource']);

这是将节点app.js输入终端时出现的错误:

/Users/Kristin/node_modules/angular/angular.js:26057
})(window, document);
   ^

ReferenceError: window is not defined
at Object.<anonymous 
(/Users/Kristin/node_modules/angular/angular.js:26057:4)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/Users/Kristin/node_modules/angular/index.js:1:63)
at Module._compile (module.js:570:32)

3 个答案:

答案 0 :(得分:1)

您已在服务器中声明了角度参考:angular.module('NoteWrangler', ['ngRoute', 'ngResource']);

Angular.JS是一个客户端库,未在服务器端上使用。

如果您使用的是Angular 2,则可能需要使用Angular Universal

答案 1 :(得分:0)

如果您只是尝试运行静态服务器,请尝试使用命令行工具http-server

正如其他用户所提到的,window错误正在发生,因为Angular不打算用于服务器端。要解决此问题,只需删除提及angular

的代码行

答案 2 :(得分:-1)

您使用的是XAMPP还是WampServer?默认情况下,这两个人在本地主机上占用端口80。也就是http://localhost:80

尝试将端口从80更改为3000.

注意:节点js不需要WAMP或XAMPP,所以如果端口级别有任何冲突。

然后重新启动节点服务器。