Javascript I';在本地主机和服务器上分配对象的行为不同

Javascript I';在本地主机和服务器上分配对象的行为不同,javascript,vue.js,axios,Javascript,Vue.js,Axios,为什么Object.assign在本地主机上可以正常工作,但在服务器上不能正常工作 我的vue应用程序托管在S3上,除了Object.assign之外,其他一切都正常工作 远程api被正确调用,更新正常,但是没有分配对象,我在catch中得到一个空错误。 console.log(JSON.stringify(e))的日志就是{} axios .put(this.url + "/client/" + item.id, { name

为什么Object.assign在本地主机上可以正常工作,但在服务器上不能正常工作

我的vue应用程序托管在S3上,除了Object.assign之外,其他一切都正常工作

远程api被正确调用,更新正常,但是没有分配对象,我在catch中得到一个空错误。 console.log(JSON.stringify(e))的日志就是{}

      axios
        .put(this.url + "/client/" + item.id, {
          name: item.name,
          contactName: item.contactName,
          phoneNumber: item.phoneNumber,
          email: item.email,
        })
        .then((response) => {
          Object.assign(this.client[this.editedIndex], item);
        })
        .catch((e) => {
          console.log(JSON.stringify(e));
          this.dialogError = true;
        });
    },

我已尝试更改对象分配,如以下对象。分配({},this.client[this.editedIndex],item);,但是我得到了任何意外的行为。

您得到的错误很可能是由
this.client[this.editedIndex]
的空值引起的。请看下面的示例:

(新承诺((解析)=>{resolve();}))
.然后(()=>{
console.log('then');
赋值(未定义,{a:1});
})
.catch((e)=>{
console.error('error',JSON.stringify(e))
});
印刷品:

那么
错误{}
未定义的
替换为
null
会得到类似的结果。因此,我假设
this.client
this.editedIndex
键上没有值

在错误日志记录中,应避免在实例中使用JSON.stringify(),因为JSON.stringify不知道如何处理它:

> JSON.stringify(new Error('message'))
'{}'

您正在丢失所有信息,如消息、堆栈等。

如果您在捕获日志中看到一个空错误,则可以确保Object.assign为空。可能将console.log(JSON.stringify(e))更改为console.error(e);以获取真正的错误消息。可能then函数引发了一个不可见的javascript错误,可能是网络请求失败。是的,问题就在这里!感谢@Beniamin H和Joshua Angnoe,this.editedIndex不是正确的索引,因此this.client未定义。我改变了记录错误的方式,并按照你们的要求得到了它。谢谢。