После «npm link» и «npm i » не удается разрешить модуль («main» и «types» правильно указаны в package.json)

#javascript #node.js #typescript #npm #npm-install

#javascript #node.js #typescript #npm #npm-install

Вопрос:

Мой файл package.json

 {
  "name": "ts-logger",
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "scripts": {
    "install": "tsc"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/vkrenta/ts-logger.git"
  },
   "devDependencies": {
    "typescript": "^4.0.2",
    "@types/node": "^14.6.4"
  },
  "dependencies": {}
   ...
}
  

Мой tsconfig.json

 {
  "compilerOptions": {
     ...
    "outDir": "./dist",
    "target": "es5",
     ...
    "rootDir": "./"
  },
  "exclude": ["node_modules", "dist"]
}
  

Я попытался отправить его на github и запустить npm link .

После того, как я создал другой проект npm, затем после require('ts-logger') или import {Logger} from 'ts-logger' и node . я получаю журналы, в которых npm не может разрешить модуль

Ответ №1:

Проблема была в package.json — я просто поменял местами devDependencies и dependencies , потому что typescript — это зависимость, которая компилирует код из git в папку dist.

 "dependencies": {
    "typescript": "^4.0.2",
    "@types/node": "^14.6.4"
  },
  "devDependencies": {}
  

UPD

Также я инициировал свой tsconfig.json в пакете с "target":"es5" , но новый проект с "target":"es2015" . Таким образом, это означает, что ваш целевой пакет должен быть более новым (или таким же), чем target в вашем проекте (лучше всего "target":"ESNext" ).).