简体   繁体   中英

custom npm package not found in my service

There is a similar post here:

My custom NPM Package is not found ,

but that did not resolve my issue.

Could not find a declaration file for module '@dc_microurb/common'. '/Users//Projects/ticketing/auth/node_modules/@dc_microurb/common/build/index.js' implicitly has an 'any' type. Try npm install @types/dc_microurb__common if it exists or add a new declaration (.d.ts) file containing `declare module '@dc_microurb/common';

There is no @types/dc_microurb__common and I am unclear as to why it is suggesting to create a new .d.ts file, when that happens automatically during the build process.

This is the package.json file inside my published package:

{
  "name": "@dc_microurb/common",
  "version": "1.0.5",
  "description": "",
  "main": "./build/index.js",
  "types": "./build/index.d.ts",
  "files": [
    "./build/**/*"
  ],
  "scripts": {
    "clean": "del ./build",
    "build": "npm run clean && tsc",
    "pub": "git add . && git commit -m \"Updates\" && npm version patch && npm run build && npm publish"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "del-cli": "^3.0.1",
    "typescript": "^4.0.5"
  },
  "dependencies": {
    "@types/cookie-session": "^2.0.41",
    "@types/express": "^4.17.9",
    "@types/jsonwebtoken": "^8.5.0",
    "cookie-session": "^1.4.0",
    "express": "^4.17.1",
    "express-validator": "^6.6.1",
    "jsonwebtoken": "^8.5.1"
  }
}

Anybody with experience in publishing packages on npm where TypeScript is involved? I am unclear as to why this package is not being found by my auth service when it is successfully installed inside that service.

Did I mess up in the way I am exporting inside my common/src/index.ts file?

export * from './errors/bad-request-error';
export * from './errors/custom-errors';
export * from './errors/database-connection-error';
export * from './errors/not-authorized-error';
export * from './errors/not-found-error';
export * from './errors/request-validation-error';

export * from './middlewares/current-user';
export * from './middlewares/error-handler';
export * from './middlewares/require-auth';
export * from './middlewares/validate-request';

Does it all have to be inside a module.exports instead?

So after reviewing a few blogs on Medium on how this is done, I noticed a couple of things.

  1. Inside my tsconfig.js , this was missing:

    /* Advanced Options / "forceConsistentCasingInFileNames": true / Disallow inconsistencies */

So I manually added it in, secondly, I noticed something I meant to remove earlier but forgot. So instead of this:

{
  "name": "@dc_microurb/common",
  "version": "1.0.5",
  "description": "",
  "main": "./build/index.js",
  "types": "./build/index.d.ts",
  "files": [
    "./build/**/*"
  ],

I needed to have it like this:

{
  "name": "@dc_microurb/common",
  "version": "1.0.6",
  "description": "",
  "main": "./build/index.js",
  "types": "./build/index.d.ts",
  "files": [
    "build/**/*"
  ],

After making those couple of corrections, now my package is available to my auth service.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM