[
"Android 2.3",
"Android >= 4",
"Chrome >= 20",
"Firefox >= 24",
"Explorer >= 8",
"iOS >= 6",
"Opera >= 12",
"Safari >= 6"
]
err.toString()
, a err.stack
, значит вопрос в том откуда берется этот stack
super(message, 404, 2);
super(message);
this.stack
- строка которая начинается с Error: Ресурс не найден!
super(message);
Меняется имя this.name = 'APIError';
После этого статический метод Error.captureStackTrace
перезаписывает свойство this.stack
на сей раз уже используя имя 'APIError'
, теперь this.stack
начинается с APIError: Ресурс не найден!
this.name = 'Error404';
, но в строке this.stack
так и остается APIError: Ресурс не найден!
name
в прототипAPIError.prototype.name = 'APIError';
Error404.prototype.name = 'Error404';
if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
} else {
this.stack = (new Error()).stack;
}
this.stack
Error
устанавливает геттер затем используется ленивое вычисление, и если его не трогать раньше времени, то получится ожидаемое значение. res.end
res.end("OK");
res.end(info.toString());
"Access-Control-Allow-Origin:*"
Должен отдавать сервер, а не клиент передавать."use strict";
(function() {
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://127.0.0.1:1534/test.txt");
xhr.addEventListener("readystatechange", function(event) {
if (xhr.readyState == 4) {
console.log(xhr.response);
}
});
xhr.send(null);
})();
"use strict";
var http = require("http");
var url = require("url");
var fs = require("fs");
var server = new http.Server(function(req, res) {
switch (req.url) {
case "/test.txt":
res.setHeader("Cache-control", "no-cache");
res.setHeader("Access-Control-Allow-Origin", "*");
fs.readFile("test.txt", function(err, info) {
if (err) {
console.log(err);
res.statusCode = 500;
res.end("Server error");
}
console.log(info.toString());
res.end(info.toString());
});
break;
default:
res.statusCode = 404;
res.end("File not found :(");
}
});
server.listen(1534, '127.0.0.1');
<a ui-sref="app.discussions.categories.posts.new">...</a>
.state('app.discussions.categories.posts.new', {
title: 'Создание нового обсуждения',
url: "/new",
views: {
content@': {
controller: 'DiscussionCreateCtrl',
templateProvider: function ($templateFactory) {
return $templateFactory.fromCacheOrUrl('...../discussion-create.html');
}
},
}
})
У нас есть опыт работы с Node.JS
не уверены, что он подойдет для игры у которой будет тысяча человек в онлайнеСмешно.