spotify-web-api-node icon indicating copy to clipboard operation
spotify-web-api-node copied to clipboard

spotify_web_api_node_1.default is not a constructor

Open Arkmind opened this issue 2 years ago • 3 comments

Versions :

{
  "spotify-web-api-node": "^5.0.2",
  "@types/spotify-web-api-node": "^5.0.7",
}

Environment : NestJS (https://docs.nestjs.com/)

Code of the Service :

import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import SpotifyWebApi from 'spotify-web-api-node';
import { PrismaService } from 'src/prisma.service';

@Injectable()
export class OAuthService {
  public client: SpotifyWebApi;

  constructor(prismaService: PrismaService, configService: ConfigService) {
    this.client = new SpotifyWebApi({
      clientId: configService.get<string>('SPOTIFY_CLIENT_ID'),
      clientSecret: configService.get<string>('SPOTIFY_CLIENT_SECRET'),
      redirectUri: configService.get<string>('SPOTIFY_REDIRECT_URI'),
    });
  }
}

Error :

spotify_web_api_node_1.default is not a constructor
TypeError: spotify_web_api_node_1.default is not a constructor
    at new OAuthService (/src/oauth/oauth.service.ts:11:19)
    at Injector.instantiateClass (/node_modules/@nestjs/core/injector/injector.js:330:19)
    at callback (/node_modules/@nestjs/core/injector/injector.js:48:41)
    at Injector.resolveConstructorParams (/node_modules/@nestjs/core/injector/injector.js:122:24)
    at Injector.loadInstance (/node_modules/@nestjs/core/injector/injector.js:52:9)
    at Injector.loadProvider (/node_modules/@nestjs/core/injector/injector.js:74:9)
    at async Promise.all (index 5)
    at InstanceLoader.createInstancesOfProviders (/node_modules/@nestjs/core/injector/instance-loader.js:44:9)
    at /node_modules/@nestjs/core/injector/instance-loader.js:29:13
    at async Promise.all (index 1)

How to reproduce : Create new service containing SpotifyWebApi and launch the app

Arkmind avatar May 25 '22 19:05 Arkmind

In order to fix it temporarly you can use

"esModuleInterop": true

in your tsconfig.json

Arkmind avatar May 25 '22 20:05 Arkmind

I fixed this like so: import SpotifyWebApi = require('spotify-web-api-node');

alexhito avatar Jun 23 '22 22:06 alexhito

I fixed this like so: import SpotifyWebApi = require('spotify-web-api-node');

this syntax doesn't even make sense

you either import it with ES6 (import {} from '') or ESM (require())

nodgear avatar Jul 25 '22 02:07 nodgear