Ecmascript 6 babel es6错误的异常位置与react
我认为这是一个巴别塔问题(不完全确定)。我的javascript控制台抛出的错误总是错误的。。。无论错误在我的代码中发生在哪里,它都指向我的handleFailure(serviceName,error)块。。。例如。。。调用this.foo();在手成功发生后,甚至在我移动这个.foo()之后;到我的getItemById方法。。它总是在同一块中抛出错误。。。我在店里做错了什么 如果我删除伪代码,它就可以正常工作。。。我希望显示给我的错误引用伪代码 这是错误: AircraftLocationStore.js:40服务器调用aircraftLocationRest失败,错误为:aircraftLocationRest!handleFailure@AircraftLocationStore.js:40(匿名函数)@RestServiceClient.js:20Ecmascript 6 babel es6错误的异常位置与react,ecmascript-6,babeljs,Ecmascript 6,Babeljs,我认为这是一个巴别塔问题(不完全确定)。我的javascript控制台抛出的错误总是错误的。。。无论错误在我的代码中发生在哪里,它都指向我的handleFailure(serviceName,error)块。。。例如。。。调用this.foo();在手成功发生后,甚至在我移动这个.foo()之后;到我的getItemById方法。。它总是在同一块中抛出错误。。。我在店里做错了什么 如果我删除伪代码,它就可以正常工作。。。我希望显示给我的错误引用伪代码 这是错误: AircraftLocation
class AircraftLocationStore extends EventEmitter {
constructor() {
super();
this._populateRestCallStatus = RestCallStatus.NOT_REQUESTED;
this._dataStore = Map({});
this.handleSuccess = this.handleSuccess.bind(this);
this.handleFailure = this.handleFailure.bind(this);
}
populate(){
RestService.fetchData(this.handleSuccess, this.handleFailure, 'aircraftLocationRest');
this._populateRestCallStatus = RestCallStatus.STARTED
}
handleSuccess(serviceName, jsonData){
UT.logMethod(TAG, `${serviceName} succeeded!`)
jsonData.forEach((entity) => {
let tempEntity = AircraftLocationHelper.createFromJson(entity);
this._dataStore = this._dataStore.merge(Map.of(tempEntity.id, tempEntity))
});
UT.log('isMap', Map.isMap(this._dataStore))
this.foo();
this._populateRestCallStatus = RestCallStatus.SUCCESS;
this.emitChange();
}
handleFailure(serviceName, error){
//Utils.logMethod(TAG, 'handleFailure');
this._populateRestCallStatus = RestCallStatus.FAILED
console.error(`Server call ${serviceName} failed with error: ${serviceName}!`)
}
...
export default new AircraftLocationStore();
如果我尝试在onChange中更改显示组件上的immutablejs记录,它会告诉我
以防万一,我将包括处理总是抛出错误的回调的代码
class RestServiceClient{
/**
* @param successCB
* @param failureCB
* @param endPoint
*/
fetchData(successCB, failureCB, endPoint) {
const serverUrl = BASE_URL + endPoint;
UT.log('serverUrl', serverUrl);
fetch(serverUrl).then(r => r.json())
.then(data => successCB(endPoint, data))
.catch(e => failureCB(endPoint, e.toString()))
}
}
export default new RestServiceClient();
这是我的webpack.config
var path = require('path');
var webpack = require('webpack');
module.exports = {
devtool: "source-map",
entry: "./src/index.js",
output: {
path: __dirname + "/build",
filename: "bundle.js"
},
module: {
loaders: [{
test: /\.js$/,
loaders: ['react-hot', 'babel'],
include: path.join(__dirname, 'src'),
exclude: /node_modules/
}]
}
};
问题似乎出在由胖箭头=> 我重写了:
fetch(serverUrl).then(r => r.json())
.then(data => let foo = data; successCB(endPoint, data))
.catch(e => failureCB(endPoint, e.toString()));
作为:
我再一次看到一些有意义的错误消息…如果你把它缩小到一个较小的例子中,你会有更多的运气。您还没有告诉我们抛出了什么错误。我只是将其包括在内。。。。我想说得不那么冗长,但我不知道它是从哪里来的。。。。每当我的项目中任何地方发生错误时,它都会引用我提到的那一行。。。这很奇怪…我明白你的意思,但是一个回答特定问题的网站也是如此,你仍然有责任为我们提供足够的信息来回答这个问题。有时候,发布一堆代码并不是世界末日,因为问题很明显,但在这里,你并没有给我们太多的东西去做,你基本上只是要求“为我解决这个问题”。开始删除函数和内联,直到得到一个小示例来演示问题。
fetch(serverUrl)
.then(
function(response) {
if (response.status !== 200) {
failureCB(endPoint, 'Looks like there was a problem. Status Code: ' + response.status);
}
// Examine the text in the response
response.json().then(function(data) {
successCB(endPoint, data)
});
}
)
.catch(function(err) {
failureCB(endPoint, 'Looks like there was a problem. Status Code: ' + err);
});