第一个AI调用——TypeScript 工程初始化与配置管理(实战跟练)

0 阅读3分钟

第一个 AI 调用——TypeScript 工程初始化与配置管理

本文基于 NestJS + LangChain.js + TypeScript 技术栈,手把手带你从零初始化一个工程,并搭好环境变量配置管理体系。当你真正发出第一个 AI 调用前,环境必须先稳。

一、前置准备

在动手之前,请确认本机已经具备以下环境:

  • Node.js ≥ 20(NestJS 与 LangChain.js 的现代版本均依赖新版 Node 特性)
  • pnpm(包管理器,比 npm 更快、磁盘占用更省)

验证命令:

node -v
pnpm -v

二、初始化工程

1. 新建工程目录

任意取名,这里以 1.basic 为例:

mkdir 1.basic
cd 1.basic

2. 初始化 package.json

pnpm init -y

3. 配置 scripts 与开发依赖

打开 package.json,补充构建脚本与 devDependencies

{
  "scripts": {
    "build": "tsc"
  },
  "devDependencies": {
    "@types/node": "22.20.1",
    "typescript": "7.0.2"
  }
}

注意包名是 @types/node(types 为复数)。少写 s 会导致 pnpm i 找不到包。

4. 安装依赖

pnpm i

5. 生成 tsconfig

npx tsc --init

该命令会在根目录生成 tsconfig.json

6. 调整 tsconfig.json

我们不是 React 应用,需要关掉 JSX 相关配置,并打开 typesrootDir

env1.png

env2.png

{
  "compilerOptions": {
    "target": "ES2022",
    "module": "CommonJS",
    "moduleResolution": "node",
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true,
    "types": ["node"],
    // "jsx": "react-jsx",          // 非 React 项目,保持注释
    // "verbatimModuleSyntax": true // 按需关闭,避免类型导入报错
  }
}

关键项说明:

  • rootDir:源码根目录,编译器只编译这里的文件。
  • outDir:编译产物输出目录(默认 dist)。
  • types: ["node"]:让 TS 识别 Node 内置 API 的类型(如 process)。
  • verbatimModuleSyntax / jsx:React 专属配置,非前端项目保持关闭。

7. 编写入口文件

新建 src/index.ts

console.log("hello");

8. 编译

pnpm build

执行后根目录出现 dist 文件夹,内含编译后的 index.js

env4.png

9. 运行

node dist/index.js

终端输出:

hello

到这一步,基础 TypeScript 工程已经跑通。

三、配置管理:环境变量

AI 调用需要 API_KEY 等敏感信息,绝不能硬编码进源码,也不能提交到 Git。正确做法是用 .env 文件 + dotenv 在运行时注入。

10. 创建 .env

在项目根目录(与 src 同级)新建 .env

API_KEY=123

这里先填一个虚拟值,真实开发时替换为可用的 Key。

11. 安装 dotenv

package.jsondependencies 中加入:

{
  "dependencies": {
    "dotenv": "17.4.2"
  }
}

然后安装:

pnpm i

12. 在代码中加载环境变量

修改 src/index.ts,在文件最顶部导入 dotenv/config

import "dotenv/config";

console.log("hello");
console.log(process.env.API_KEY);

13. 重新构建并运行

pnpm build
node dist/index.js

输出:

hello
123

env3.png

14. 验证热感知

修改 .env 中的 API_KEY=456无需重新 build,直接再次运行:

node dist/index.js

输出变为:

hello
456

env5.png 说明 dotenv 在程序启动时实时读取 .env,环境变量的变更在下次运行即生效。

四、关键原理解析

为什么改 .env 不用重新 build?

dotenv 是在运行时(Node 进程启动、import "dotenv/config" 执行时)同步读取 .env 并写入 process.env 的。而 tsc 编译只处理 TypeScript 类型与语法,不会把环境变量打包进 dist。因此:

  • 改源码 → 必须 pnpm build 重新编译
  • .env → 只需重新 node dist/index.js

.env 为什么要进 .gitignore

.env 常含密钥,提交到仓库会造成泄露。在 .gitignore 中加入:

.env

正式项目中通常用 .env.example 提交一份字段模板(值留空),供协作者参考, 例如之前发布过的小娜ai聊天工具。

五、小结

至此,我们完成了:

  1. 用 pnpm + TypeScript 初始化标准工程结构;
  2. 配置了 tsconfig.json(rootDir / outDir / types);
  3. 通过 dotenv 实现了环境变量的安全注入与运行时读取。

这是所有 AI 应用(NestJS 服务、LangChain.js 链路)统一的起点。下一步,你就可以在 index.ts 里用 process.env.API_KEY 发起第一个大模型调用了。


技术栈:NestJS · LangChain.js · TypeScript