其他
我是这样用 ChatGPT 解决编码问题的
导读:来看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 命令运行验证:
你可以看到包信息:
helloworld@1.0.0 /Users/jiasheng/branch/helloworld
└── dummy-package@9.9.9 extraneous
我们可以将其更改为需要包含 package.json 文件。而不是像它原始解决方案那样需要模块:
const prisma:any = require('prisma/package.json')
它不仅消除了副作用,而且我可以获得该包的更多详细信息,比如版本等。
最后的话
不管怎样,你可以看到ChatGPT确实可以帮助我们很多,甚至为我们编写代码,但真正思考并彻底解决问题的还是我们。
想到很多人惊慌人工智能将取代开发人员。我认为应该担心这个是谷歌、百度们 ,而不是我们开发者~
作者:贾晓生
相关阅读: