Yêu cầu thg 1 12, 2018 9:35 SA 477 0 1
  • 477 0 1
+1

Apollo js (graphql) văng lỗi Unhandled error GraphQL error

Chia sẻ
  • 477 0 1

Chào mọi người.

Mình cũng đang tìm hiểu apollo kết hợp với react js để query qua Graphql. Mình đang gặp vấn đề về việc ném error về client. Trong phần resolvers mình viết thế này

contacts: async (root, arg, context) => {
            if (!context.user) {
               throw new AuthorizeError();
            }
            return getAllContacts();
        },

Trường hợp hoàn hảo là người dùng đăng nhập thành công. context.user sẽ có giá trị. và mình lấy được danh sách contacts.

Sau đó mình check trường hợp context.user = null. thì mình ném ra một cái lỗi throw new AuthorizeError()

 const AuthorizeError = createError('AuthorizeError', {
    message: 'Bạn không có quyền truy cập hệ thống.hehe',
    data: {
        fasdfaf: 'fdasff'
    }
});

Sau khi mình reload lại thì Dưới client ( trong source react ) mình catch được cái lỗi đó. nhưng khong hiểu vì sao trong tab console của trình duyệt lại văng ra cái lỗi

  render() {
            const { data: { loading, error, contacts }, client } = this.props;
            if (loading) {
                return (<p>Loading.....</p>);
            }
            debugger;
            if (error) {
                if (error.graphQLErrors[0].name == "AuthorizeError") {
                     return  {error.graphQLErrors[0].message}
                     }
             }
        }
        

Trong tab console văng lỗi này Unhandled error GraphQL error: Bạn không có quyền truy cập hệ thống.hehe Error: GraphQL error: Bạn không có quyền truy cập hệ thống.hehe at new ApolloError Mình xin đính kèm cái hình

=> Mọi người có ai gặp lỗi này rồi. Mong mọi người giúp đỡ. Cám ơn mọi người rất nhiều.

thg 1 15, 2018 3:32 SA

Viblo có hỗ trợ cú pháp markdown trong form của comment, answer, question, post giúp highlight code bằng cú pháp: ``` CODE HERE ```. Bạn có thể đặt câu hỏi và sử dụng cú pháp trên để câu hỏi được hiển thị đẹp và dễ đọc hơn nhé.

thg 1 15, 2018 4:31 SA

VD: Chào mọi người.

Mình cũng đang tìm hiểu apollo kết hợp với react js để query qua Graphql. Mình đang gặp vấn đề về việc ném error về client. Trong phần resolvers mình viết thế này

contacts: async (root, arg, context) => {
    if (!context.user) {
        throw new AuthorizeError();
    }

    return getAllContacts();
},

Trường hợp hoàn hảo là người dùng đăng nhập thành công. context.user sẽ có giá trị. và mình lấy được danh sách contacts.

Sau đó mình check trường hợp context.user = null. thì mình ném ra một cái lỗi throw new AuthorizeError():

const AuthorizeError = createError('AuthorizeError', {
    message: '**Bạn không có quyền truy cập hệ thống.hehe**',
    data: { fasdfaf: 'fdasff' }
});

Sau khi mình reload lại thì Dưới client ( trong source react ) mình catch được cái lỗi đó. nhưng khong hiểu vì sao trong tab console của trình duyệt lại văng ra cái lỗi:

render() {
    const { data: { loading, error, contacts }, client } = this.props;
    if (loading) {
        return (<p>Loading.....</p>);
    }

    debugger;
    if (error) {
        if (error.graphQLErrors[0].name == "AuthorizeError") {
            return { error.graphQLErrors[0].message }
        }
    }
} 

Trong tab console văng lỗi này Unhandled error GraphQL error: Bạn không có quyền truy cập hệ thống.hehe Error: GraphQL error: Bạn không có quyền truy cập hệ thống.hehe at new ApolloError Mình xin đính kèm cái hình

Avatar Truong Chi Nhan @zhangchinhan
thg 1 15, 2018 6:37 SA

ok. thanks bạn nhé. hihi.

1 CÂU TRẢ LỜI


Đã trả lời thg 1 15, 2018 3:42 SA
+1

Bạn ném throw thì cần try-catch để bắt lỗi chứ bạn, if-else không bắt được đâu.

Chia sẻ
Avatar Truong Chi Nhan @zhangchinhan
thg 1 15, 2018 6:43 SA

chào bạn, không hẳn là do chưa try catch đâu bạn. mình đang tìm hiểu về apollo js. phần trả response về cho client. mình đã tìm hiểu trên mạng. xem nhiều clip vs tutorial đều throw new Error . Mình đang phân vân là tại sao mình đã get được error trên server
const { data: { loading, error, contacts }, client } = this.props; trả về trong trong phần render() của react ròi. mà tại sao trong tab console của trình duyệt lại văng ra cái lỗi

Unhandled error GraphQL error: Bạn không có quyền truy cập hệ thống.hehe Error: GraphQL error: Bạn không có quyền truy cập hệ thống.hehe
    at new ApolloError (http://localhost:3000/static/js/bundle.js:20785:28)
    at http://localhost:3000/static/js/bundle.js:19847:41
    at http://localhost:3000/static/js/bundle.js:20234:17
    at Array.forEach (<anonymous>)
    at http://localhost:3000/static/js/bundle.js:20233:18
    at Map.forEach (<anonymous>)
    at QueryManager../node_modules/apollo-client/core/QueryManager.js.QueryManager.broadcastQueries (http://localhost:3000/static/js/bundle.js:20228:22)
    at Object.next (http://localhost:3000/static/js/bundle.js:20267:31)
    at SubscriptionObserver.next (http://localhost:3000/static/js/bundle.js:145182:14)
    at http://localhost:3000/static/js/bundle.js:21121:76
    at Array.forEach (<anonymous>)
    at Object.next (http://localhost:3000/static/js/bundle.js:21121:43)
    at SubscriptionObserver.next (http://localhost:3000/static/js/bundle.js:145182:14)
    at SubscriptionObserver.next (http://localhost:3000/static/js/bundle.js:145182:14)
    at http://localhost:3000/static/js/bundle.js:21319:26
    at <anonymous>
__stack_frame_overlay_proxy_console__ @ index.js:2177

Uncaught (in promise) Error: GraphQL error: Bạn không có quyền truy cập hệ thống.hehe
    at new ApolloError (ApolloError.js:34)
    at Object.next (QueryManager.js:700)
    at SubscriptionObserver.next (zen-observable.js:154)
    at dedupLink.js:49
    at Array.forEach (<anonymous>)
    at Object.next (dedupLink.js:49)
    at SubscriptionObserver.next (zen-observable.js:154)
    at SubscriptionObserver.next (zen-observable.js:154)
    at httpLink.js:140
    at <anonymous>````
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí