如何在gatsby-node.js文件中调用TypeScript编写的函数
完全可以实现你的需求,你遇到的报错是因为默认Node.js的CommonJS模块系统不识别.ts后缀,也没有内置TypeScript编译能力,直接导入.ts文件时就会抛出找不到模块的错误。
解决方案
方案1:将gatsby-node改为TS格式(推荐)
Gatsby 从v2.20版本开始原生支持TS格式的项目配置文件,你只需要把原来的gatsby-node.js重命名为gatsby-node.ts,就可以直接在里面导入你写的.ts后缀辅助函数,Gatsby会自动处理TypeScript的编译逻辑,无需额外配置编译工具。
操作示例:
- 重命名
gatsby-node.js为gatsby-node.ts - 在
gatsby-node.ts中按正常TS语法导入辅助函数:
import { yourFunction } from './src/generators/usda/helper.ts'
- 直接执行
gatsby develop即可正常运行。
方案2:保留gatsby-node.js格式
如果你不想改动原有gatsby-node.js的格式,可以选择以下两种方法之一:
- 预编译TS文件:在运行Gatsby命令前,先执行
tsc命令把所有TypeScript辅助文件编译为JS文件,导入的时候直接引用编译后的.js文件即可 - 运行时编译TS:安装
ts-node和typescript依赖,然后在gatsby-node.js的最顶部添加如下代码:
require('ts-node/register') // 后续就可以正常引入.ts文件了 const { yourFunction } = require('./src/generators/usda/helper.ts')
注意事项
你需要确保项目根目录的tsconfig.json配置符合Node.js运行要求,推荐将compilerOptions.module设置为CommonJS,避免编译后出现模块导入导出的兼容问题。
内容的提问来源于stack exchange,提问作者daydreamer
相关产品推荐
相关产品推荐

