Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: TypeError: api_1.default is not a constructor in Nestjs #446

Open
mustafakendiguzel opened this issue Apr 15, 2024 · 8 comments · Fixed by #461
Open

[Bug]: TypeError: api_1.default is not a constructor in Nestjs #446

mustafakendiguzel opened this issue Apr 15, 2024 · 8 comments · Fixed by #461
Labels
triage Issue is being researched

Comments

@mustafakendiguzel
Copy link

mustafakendiguzel commented Apr 15, 2024

Software Version

7.3.0

Language Version

21.4.0

Operating System

Windows

What happened?

  1. Imported easypost-node library in nestjs
  2. Attempt to create new EasyPostClient via
import EasyPost from '@easypost/api';
export class ShippingMailingService {
  private readonly easyPostClient: EasyPost
  constructor() { 
    this.easyPostClient = new EasyPost('apiKey')
  }
}
  1. Upon building, error is thrown that . TypeError: api_1.default is not a constructor
  2. Tsconfig.json
{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": false,
    "removeComments": true,
    "noLib": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "resolveJsonModule": true,
    "target": "es2017",
    "sourceMap": true,
    "allowJs": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "lib": ["ES7", "ES2021", "DOM"],
    "incremental": true,
    "skipLibCheck": true,
    "strictNullChecks": false,
    "noImplicitAny": false,
    "strictBindCallApply": false,
    "forceConsistentCasingInFileNames": false,
    "noFallthroughCasesInSwitch": false,
  }
}

What was expected?

To be able to build the app while using EasyPostClient

Sample Code

import EasyPost from '@easypost/api';

export class ShippingMailingService {
  private readonly easyPostClient: EasyPost
  constructor() { 
    this.easyPostClient = new EasyPost('apiKey')
  }
}

Relevant logs

No response

@mustafakendiguzel mustafakendiguzel added the triage Issue is being researched label Apr 15, 2024
@nwithan8
Copy link
Member

Hello there, thanks for writing in!

I believe there's an issue with your provided code snippet, you should be trying to construct an EasyPostClient object, not an EasyPost object

import EasyPostClient from '@easypost/api'; 

export class ShippingMailingService { 
  private readonly easyPostClient: EasyPostClient constructor() { this.easyPostClient = new EasyPostClient('apiKey') } }

@mustafakendiguzel
Copy link
Author

Hello there, thanks for writing in!

I believe there's an issue with your provided code snippet, you should be trying to construct an EasyPostClient object, not an EasyPost object

import EasyPostClient from '@easypost/api'; 

export class ShippingMailingService { 
  private readonly easyPostClient: EasyPostClient constructor() { this.easyPostClient = new EasyPostClient('apiKey') } }

Thanks for the answer @nwithan8.
I get the same error that didn't solve this problem.

@heindrik
Copy link

has anyone found a workaround for this yet?

@AshuImmencer05
Copy link

Even i tried these solutions but still i am getting the same error

@chr0m1ng
Copy link

@AshuImmencer05 @heindrik @mustafakendiguzel
Hey folks, I've found a workaround, import under dist/easypost:

import EasyPostClient from '@easypost/api/dist/easypost'

const client = new EasyPostClient(api_key)

@AshuImmencer05
Copy link

@chr0m1ng Thank you so much ,your solution was really helpful it worked out pretty well..

@AshuImmencer05
Copy link

@heindrik @chr0m1ng @nwithan8 @Justintime50 @mustafakendiguzel Guys I just wanted to ask a simple question, as i create shipment using api from the backend response object i get from easypost is very large so basically which has properties that are not required so how to get an ideal response which can help reduce the response time and prevent us from security breaks and other stuff etc?

@nwithan8
Copy link
Member

nwithan8 commented Oct 15, 2024

@heindrik @chr0m1ng @nwithan8 @Justintime50 @mustafakendiguzel Guys I just wanted to ask a simple question, as i create shipment using api from the backend response object i get from easypost is very large so basically which has properties that are not required so how to get an ideal response which can help reduce the response time and prevent us from security breaks and other stuff etc?

The API will always return the complete record for any given object (e.g. a Shipment), so there is no way to necessarily reduce the response payload size. You can reduce your request payloads by sending only the ID of existing server-side records (e.g. the ID of an existing Shipment), as that is all the server requires to locate and interact with an existing record.

This question is unrelated to the original issue. To avoid pinging the other subscribers to this thread, if you have any additional questions, please open a separate ticket or reach out to our support team at [email protected].

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
triage Issue is being researched
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants