Скомпилированный JS с машинописным текстом работает, но ts-node-dev выдает ошибки компиляции

#node.js #typescript #tsc #ts-node #ts-node-dev

Вопрос:

Я пытаюсь использовать пакет npm fs-xattr в проекте машинописи, но, похоже, я не могу заставить работать и tsc то, и ts-node-dev другое .

Когда я запускаю npm run build amp;amp; node index.js , это работает нормально. Когда я запускаю npm run dev , он вылетает с ошибкой:

 Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /home/meme/xfs/node_modules/fs-xattr/index.js
 

То, что я хотел бы иметь возможность использовать ts-node-dev при разработке этого, чтобы, однако, я мог получить и tsc то, и другое и ts-node-dev работать правильно, включая изменение любых значений JSON или версий узлов или чего-либо еще, без проблем.

Самый простой способ воспроизведения, запущенный на узле 14.17.6 с этими файлами:

пакет.json

 {
  "name": "xfs",
  "type": "module",
  "scripts": {
    "dev": "ts-node-dev index.ts",
    "build": "tsc"
  },
  "devDependencies": {
    "@types/node": "^16.9.1",
    "ts-node": "^10.2.1",
    "ts-node-dev": "^1.1.8",
    "typescript": "^4.4.3"
  },
  "dependencies": {
    "fs-xattr": "^0.4.0"
  }
}
 

tsconfig.json

 {
    "compilerOptions": {
      "lib": ["es2020"],
      "target": "es2020",
      "moduleResolution": "Node",
  
      "strict": true,
      "esModuleInterop": true
    }
}

 

индекс.ts

 import { getAttribute } from 'fs-xattr'

async function run() {
    console.log('RUN');
    const r = await getAttribute('/some/file.txt', 'whatever');
    console.log('>>>>', r);
}

run().catch(e => console.log(e));