Javascript 错误:未捕获(承诺中):语法错误:意外标记<;JSON格式

Javascript 错误:未捕获(承诺中):语法错误:意外标记<;JSON格式,javascript,json,angular,parsing,typescript,Javascript,Json,Angular,Parsing,Typescript,解析Json文件时出错,该文件在上有效 在我的网站上,我得到了:Error:Uncaught(在promise中):SyntaxError:Unexpected token

解析Json文件时出错,该文件在上有效

在我的网站上,我得到了:Error:Uncaught(在promise中):SyntaxError:Unexpected token<在JSON中的位置0


有人知道如何解决这个问题吗?我的JSON文件是有效的,我的Light对象包含有效字段,因此我无法理解。

/lights.JSON
可能返回HTML而不是JSON,因此resp.JSON()失败。您可以在
将resp.json()返回为Light[]之前添加
console.log(resp.text())
行,这样您就可以看到原始响应(或者只需在dev tools networking选项卡中打开即可)

检查从服务器获得的响应。如果返回html内容而不是json,则通常会出现<。因此,服务器可能会返回您意想不到的结果。要解决“未捕获(承诺中)”问题,您应该在承诺链的末尾添加一个
.catch(…)
处理程序。谢谢,是的,我需要将我的json文件放在资产文件夹中,否则它会给我html而不是json。可能是因为它返回了404错误页,您应该在收到文件请求响应后检查状态代码,以捕获类似的问题
@Injectable()
export class LightParserService{
  ITEMS_URL = "./lights.json";
  constructor(private http: Http) {
  }

  getItems(): Promise<Light[]> {
    return this.http.get(this.ITEMS_URL).toPromise()
    .then(resp  => {
        return resp.json() as Light[];
      });
    }
}
lights : Light[] = [];
getLights(): void{
      this.lightService.getItems().then(light => this.lights = light);
    }