slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
我是这样用 ChatGPT 解决编码问题的
17611538698
webmaster@21cto.com

我是这样用 ChatGPT 解决编码问题的

资讯 0 1589 2022-12-28 05:59:30

图片

导读:来看Node.js工程师如何使用 ChatGPT 解决编码问题的。

我需要解决的问题

简而言之,我需要检查在运行时是否安装了Node.js。我正在构建一个新的工具包ZenStack,用于使用 Next.js + Typescript 构建安全的 CRUD 应用。


因为它构建在Prisma之上,因此在运行 ZenStack 的 CLI 时,必须检查是否已经安装了它,否则它会提示用户先安装 Prisma。


获取答案


我开始尝试这样直接问 ChatGPT:

图片

干脆利落!ChatGTP的答案看起来很有说服力。我的问题解决了!

带来了副作用


它确实有效,但也带来了一个副作用。在CLI 中,我使用async-exit-hook 来处理如下未捕获的错误:

// You can hook uncaught errors with uncaughtExceptionHandler(), consequently adding // async support to uncaught errors (normally uncaught errors result in a synchronous exit).exitHook.uncaughtExceptionHandler(err => {    console.error(err);});

导入 Prisma 时,一些代码好像也正在运行。


我不确定 Prisma 是否提供了一些标志来控制它。即使是这样,它对我来说仍然是个不干净的解决方案,因为它就像一个潘多拉盒子,你不会知道运行了哪些代码。


来点清洁液


避免副作用的最直接方法是使用单独的子进程(child_process)。那么,如果把这个工作分配给你,我使用 npm 命令该怎么做呢?


那我们再问这个无所不知的人吧:

图片

对我来说,它的答案看起来是一个干净的解决方案。

再进一步


作为优秀的开发人员,我们应该始终尝试进一步思考。


如果 npm 命令未安装或损坏怎么办?如果我们知道 npm 如何找到模块,我们就可以自己做了。


我再次试问ChatGPT:

图片

由于 npm 命令显然不会为包执行任何代码,它会找到名称和版本作为指定的答案:

它将显示所有已安装包的名称和版本

那么,它从哪里获取版本信息呢?当然,来自 package.json 这个文件。

dummy-package实际上就用,我们可以通过在其下创建文件夹 node_modules,然后创建package.json, 然后用以下内容来验证它:

{    "name": "dummy-package",    "version": "9.9.9"}

然后使用npm 命令运行验证:

npm list --depth=0 dummy-package

你可以看到包信息:

helloworld@1.0.0 /Users/jiasheng/branch/helloworld└── dummy-package@9.9.9 extraneous


我们可以将其更改为需要包含 package.json 文件。而不是像它原始解决方案那样需要模块:


const prisma:any = require('prisma/package.json')


它不仅消除了副作用,而且我可以获得该包的更多详细信息,比如版本等。


最后的话


不管怎样,你可以看到ChatGPT确实可以帮助我们很多,甚至为我们编写代码,但真正思考并彻底解决问题的还是我们。


想到很多人惊慌人工智能将取代开发人员。我认为应该担心这个是谷歌、百度们 ,而不是我们开发者~ 图片


作者:贾晓生

评论