17611538698
webmaster@21cto.com

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

作者 万能的大雄 分类 资讯 2022年12月28日

图片

导读:来看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确实可以帮助我们很多,甚至为我们编写代码,但真正思考并彻底解决问题的还是我们。


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


作者:贾晓生

评论