使用ts-node運行ts腳本以及踩過的坑


應用場景

在代碼日常中,經常會需要寫各種腳本,今天使用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搜索問題更高速有效,其他地方很多無效甚至答非所問的回答。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM