【问题标题】:node app.js results in "window not defined"节点 app.js 导致“未定义窗口”
【发布时间】:2017-05-05 22:27:17
【问题描述】:

根据对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']);

这是我在终端中输入 node 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)

【问题讨论】:

  • 你能扩展你想要达到的目标吗?从你的问题看不清楚。
  • 抱歉。编辑以增加清晰度。

标签: javascript node.js terminal socket.io


【解决方案1】:

你已经在你的服务器中声明了一个角度引用:angular.module('NoteWrangler', ['ngRoute', 'ngResource']);

Angular.JS 是一个客户端库,它不用于服务器端

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

【讨论】:

  • 道歉。我是新来的。你是说需要进入我的 index.html 文件吗?
  • 是的,这是两个不同的东西。
  • 尝试找到一个指南“express/angular”并使用这样的生成器:npmjs.com/package/generator-express-angular
  • 你弄明白了吗?
  • 你能把错误发给我们吗?如果您删除了引用,则它是一个新引用
【解决方案2】:

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

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

【讨论】:

  • 我试过这个并得到这个错误:缺少对 /usr/local/lib/node_modules /usr/local/lib 的写访问权限我应该使用 cd 让它在正确的文件夹中查找吗?跨度>
  • 尝试使用 sudo?
【解决方案3】:

您使用的是 XAMPP 还是 WampServer ?这两个家伙默认占用 localhost 上的 80 端口。即http://localhost:80

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

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

然后重启节点服务器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 2012-11-14
    相关资源
    最近更新 更多