npx命令行运行ts-node执行ts脚本时无法识别导入依赖如何解决?
问题原因及解决方案
报错根本原因
- 默认情况下Node.js的模块解析策略只会检索当前工作目录下的
node_modules、上级目录的node_modules,以及系统内置模块路径,全局安装的npm包默认不会被本地脚本识别 - TypeScript还需要额外的对应库的类型声明文件,就算JS模块能找到,缺少
@types/xxx类型包也会触发该报错
方案1:配置让ts-node识别全局依赖(不推荐,易出现多项目版本冲突)
- 先获取全局npm包的安装路径,执行命令:
npm root -g - 运行ts-node时指定
NODE_PATH环境变量指向第一步输出的全局路径- Linux/macOS 执行:
NODE_PATH=$(npm root -g) npx ts-node hello.ts - Windows Powershell 执行:
$env:NODE_PATH=$(npm root -g); npx ts-node hello.ts
- Linux/macOS 执行:
- 安装对应依赖的全局类型声明包:
npm i -g @types/lodash
方案2:本地项目安装(更稳定,无版本冲突问题)
- 若脚本所在目录还没有package.json,先初始化:
npm init -y - 本地安装依赖和对应类型包:
npm i lodashnpm i -D @types/lodash - 直接执行原有命令即可正常运行:
npx ts-node hello.ts
补充说明
你后续反复卸载重装后报错消失,大概率是操作过程中无意中把依赖安装到了当前项目的node_modules目录下,触发了默认的模块解析规则,因此问题解决。
内容的提问来源于stack exchange,提问作者l33t
相关产品推荐
相关产品推荐

