什么是 graphql-server-express-propagate-errors?
graphql-server-express-propagate-errors 是一个基于 Express 框架的 npm 包。它拥有处理 GraphQL 错误的能力,能够将错误信息传递到 Express 的错误处理程序,以便于调试。同时,它还提供了一些相应的 API,方便我们处理错误信息。
安装
使用 npm 进行安装:
npm install graphql-server-express-propagate-errors
使用步骤
步骤一:引入包
const { expressErrorHandler, errorPropagation } = require('graphql-server-express-propagate-errors');
步骤二:定义错误处理程序
function errorHandler(error, req, res, next) { console.error(error); res.status(error.statusCode || 500).send({ message: error.message, extensions: error.extensions, }); }
步骤三:在 Express 应用中注册错误处理程序
app.use(errorHandler);
步骤四:使用中间件进行错误传播
app.use('/graphql', graphqlHTTP({ schema: mySchema, // 注意这里使用了 errorPropagation 中间件 // 它会将错误信息传递到 Express 的错误处理程序 middleware: [errorPropagation], }));
API
expressErrorHandler
使用 expressErrorHandler 可以将 GraphQL 的错误信息转化成 Express 的错误对象。这一步骤是为了保证所有 Express 中的错误处理程序可以统一处理错误,而不仅仅是 GraphQL 的错误。
-- -------------------- ---- ------- ----- - ------------------- - - --------------------------------------------------- --- ----- - --- ---------- -------- ---------------- - - ----- ------ -- --- ------------ - --------------------------- -- ------------ ------- -- - -- ------- -------- -- ----------- ---- -- -------- ---- ------- -- ----------- - ----- ----- - -- -
errorPropagation
errorPropagation 是一个 Express 中间件,用于将 GraphQL 的错误信息传递到 Express 的错误处理程序中。可以在 graphqlHTTP 的 middleware 中使用该中间件。
const { errorPropagation } = require('graphql-server-express-propagate-errors'); app.use('/graphql', graphqlHTTP({ schema: mySchema, middleware: [errorPropagation], }));
示例代码
-- -------------------- ---- ------- ----- - ----------- - - --------------------------- ----- - -------- ----------- - - ------------------- ----- - -------------------- ---------------- - - --------------------------------------------------- ----- ------ - ------------- ---- ----- - ------ ------ - --- ----- ---- - - ------ -- -- - ----- --- ------------ --------- -- -- ----- ------------ - ------- ---- ---- ----- -- - --------------------- --------------------------- -- ----------- -------- -------------- ----------- ----------------- --- -- ----- --- - ---------- ---------------------- ------------------- ------------- ------- ------- ---------- ----- --------- ----- ----------- ------------------- ---- ---------------- -- -- - ---------------------------- ---
在浏览器中访问 http://localhost:3000/graphql
,执行以下 GraphQL 查询:
{ hello }
此时将看到以下结果:
-- -------------------- ---- ------- - --------- - - ---------- ------ -------- ------------- ----- ------------ - - ------- -- --------- - - -- ------- - ------- - - -- ------- - -------- ---- - -
如果查看 Node.js 的控制台,也可以看到错误信息被成功地打印出来:
-- -------------------- ---- ------- ------ ----- ------ -- ---------- --------------------- -- --------- ----------------------------------------------------- -- ------------------------------------------------------- -- --------- ------------- -- ------------ --------------------------------------------------------- -- -------------------------------------------------- -- ------------ ------------- -- ------------- ---------------------------------------------------- -- ------- ---------------------------------------------------- -- ----------------------------------- --- -------- -------------------------------------------------
结论
graphql-server-express-propagate-errors 带来了很多方便的功能,能够让我们更方便地处理 GraphQL 的错误信息。它的安装和使用也非常简单。现在,你已经学会了如何使用这个 npm 包,从而更方便地在前端开发中使用 GraphQL。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600552ba81e8991b448d0225