前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用ts-node直接运行ts脚本

使用ts-node直接运行ts脚本

作者头像
不作声
发布2021-03-23 11:34:32
10.9K0
发布2021-03-23 11:34:32
举报
文章被收录于专栏:M不作声M不作声

应用场景

在代码日常中,经常会需要写各种脚本,今天使用ts写了个脚本,运行的时候各种报错,还是决定写下来。

运行ts脚本需要一个库ts-node,这个库不能全局安装,否则会报错。

yarn add -D ts-node
# 或者
npm i ts-node -D

使用

安装好后开始添加配置项:

  • ts.config.json中添加配置"mudoule": esnextes2005
  • package.json中添加配置"type":"modules"
  • 在文件中的import语句中「包含文件扩展名」,如import data from './data'改为import data from './data.js',另外.ts后缀也要改为.js

然后就可以使用命令行命令运行ts脚本。

node --loader ts-node/esm ./my-script.ts

报错

在这个过程中报错不少,在网上各种论坛跑来跑去,终于解决了问题。

SyntaxError: Cannot use import statement outside a module

无法在模块外使用import,解决这个问题需要在package.json文件中添加"type":"modules"

Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'C:\Users\1\Desktop\my-project\data' imported from 'C:\Users\1\Desktop\get-data.ts' ❞

找不到导入的模块,是因为没有在导入的文件中添加后缀名。

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts"

我收到这条报错的时候,命令行命令使用的是ts-node ./myscripts.ts,改用以下命令时,问题解决。

node --loader ts-node/esm ./my-script.ts

ReferenceError: fetch is not defined

获取数据使用了fetch库,不是标准的Nodejs方法,需要下载node-fetch

yarn add node-fetch

写在最后

虽然程序员有很多交流问题的社区论坛,但跑了一圈后发现还是在githubIssues搜索问题更高速有效,其他地方很多无效甚至答非所问的回答。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大前端合集 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 应用场景
  • 使用
  • 报错
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档