首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当试图运行ts节点脚本时,出现未知的文件扩展名".ts“错误。

当试图运行ts节点脚本时,出现未知的文件扩展名".ts“错误。
EN

Stack Overflow用户
提问于 2022-04-05 18:57:54
回答 3查看 12.4K关注 0票数 4

我正在尝试运行一个脚本,脚本创建在一个带有两个.ts文件的普通文件夹中。一个具有脚本,另一个具有运行它的助手函数。我还导入了更多的东西,如axios或表单数据。

问题是,当我尝试使用ts- node : script.ts运行脚本时,会出现以下错误:

代码语言:javascript
运行
复制
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts"

我的package.json:

代码语言:javascript
运行
复制
{
  "dependencies": {
    "@types/node": "^17.0.23",
    "axios": "^0.26.1",
    "form-data": "^4.0.0",
    "showdown": "^2.0.3",
    "ts-node": "^10.7.0",
    "typescript": "^4.6.3"
  },
  "type": "module"
}

我的tsconfig.json:

代码语言:javascript
运行
复制
{
  "compilerOptions": {
    "esModuleInterop": true
  },
  "include": ["/**/*.ts"],
  "exclude": ["node_modules"]
}

我在script.ts文件中的导入是:

代码语言:javascript
运行
复制
import { datoManagementPrimaryEnvironment } from "./content.management";
import {
  createContent,
  uploadToCloudfare,
  getEntryFromDatoWithTheId,
  getFilters,
} from "./helpers";

在helpers.ts中:

代码语言:javascript
运行
复制
import { datoManagementPrimaryEnvironment } from "./content.management";
import axios from "axios";
import FormData from "form-data";
var showdown = require("showdown");

有人知道我做错了什么吗?谢谢!

EN

回答 3

Stack Overflow用户

发布于 2022-04-05 19:34:26

"type": "module"中删除package.json

并将tsconfig.json更改为:

代码语言:javascript
运行
复制
{
  "compilerOptions": {
    "esModuleInterop": true,
    "moduleResolution": "node"
  },
  "include": ["/**/*.ts"],
  "exclude": ["node_modules"]
}
票数 1
EN

Stack Overflow用户

发布于 2022-11-15 16:45:29

下面是如何将TypeScript与本机ESM结合使用

  1. 将您的package.json更新为:
代码语言:javascript
运行
复制
{
  "type": "module",
  // …
}
  1. 安装@tsconfig/node-lts-strictest-esm依赖项:
代码语言:javascript
运行
复制
npm i -D @tsconfig/node-lts-strictest-esm
  1. 将您的tsconfig.json更新为:
代码语言:javascript
运行
复制
{
  "$schema": "https://json.schemastore.org/tsconfig",
  "extends": "@tsconfig/node-lts-strictest-esm/tsconfig.json",
  // …
}
  1. 在TS源文件中使用带有.js扩展名的导入,例如:
代码语言:javascript
运行
复制
import { Foo } from './common/foo.js';
  1. 然后使用ts-node-esm file.ts命令而不是ts-node file.ts

这应该能起作用。

另外,看看详细指南

票数 1
EN

Stack Overflow用户

发布于 2022-04-06 10:01:58

当您想要使用ts节点时,您应该尝试使用ts-node scripts.ts而不是node scripts.ts运行该文件。

您还可以参考npmjs.com上的用法示例。

票数 -5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71757074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档