Как исправить window.open () в Heroku? - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь разместить веб-страницу на Heroku, используя Node.js. Да, я знаю о методе php, но вместо этого я хочу сделать это с Node. Пока все работает очень хорошо, есть только одна маленькая проблема.

Мой Procfile выглядит следующим образом: web: node main.js

Мой файл main.js: window.open("index.html", "_self");

Мой index.html файл в порядке и соединяется с остальным, но он очень длинный, поэтому я не хочу публиковать его здесь.

У меня есть package.json и т. Д., Но при попытке развернуть приложение появляется следующая ошибка.

State changed from crashed to starting
2018-09-12T03:23:22.000000+00:00 app[api]: Build succeeded
2018-09-12T03:23:24.424276+00:00 heroku[web.1]: Starting process with command `node main.js`
2018-09-12T03:23:26.694405+00:00 heroku[web.1]: Process exited with status 1
2018-09-12T03:23:26.710365+00:00 heroku[web.1]: State changed from starting to crashed
2018-09-12T03:23:26.630643+00:00 app[web.1]: /app/main.js:1
2018-09-12T03:23:26.630664+00:00 app[web.1]: (function (exports, require, module, __filename, __dirname) { window.open("index.html", "_self");
2018-09-12T03:23:26.630666+00:00 app[web.1]:                                                               ^
2018-09-12T03:23:26.630668+00:00 app[web.1]: 
2018-09-12T03:23:26.630670+00:00 app[web.1]: ReferenceError: window is not defined
2018-09-12T03:23:26.630671+00:00 app[web.1]:     at Object.<anonymous> (/app/main.js:1:63)
2018-09-12T03:23:26.630672+00:00 app[web.1]:     at Module._compile (module.js:653:30)
2018-09-12T03:23:26.630674+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:664:10)
2018-09-12T03:23:26.630676+00:00 app[web.1]:     at Module.load (module.js:566:32)
2018-09-12T03:23:26.630677+00:00 app[web.1]:     at tryModuleLoad (module.js:506:12)
2018-09-12T03:23:26.630679+00:00 app[web.1]:     at Function.Module._load (module.js:498:3)
2018-09-12T03:23:26.630680+00:00 app[web.1]:     at Function.Module.runMain (module.js:694:10)
2018-09-12T03:23:26.630682+00:00 app[web.1]:     at startup (bootstrap_node.js:204:16)
2018-09-12T03:23:26.630684+00:00 app[web.1]:     at bootstrap_node.js:625:3

Очевидно, это означает, что он не распознает «окно», но я не знаю, как это исправить. Если у кого-то есть ответ, я был бы очень признателен. Спасибо!

1 Ответ

0 голосов
/ 12 сентября 2018

При работе на Heroku вы используете NodeJS, а не Javascript в браузере. В узле нет window. Таким образом, вы не можете использовать window.open.

var http = require('http');
var fs = require('fs');

var html = fs.readFileSync('index.html');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.end(html);
}).listen(process.env.PORT || 5000);

Это запустит веб-сервер через порт $ PORT или 5000 и предоставит файл index.html для всех запросов. Он должен работать как есть на Heroku.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...