contentful-typescript-codegen icon indicating copy to clipboard operation
contentful-typescript-codegen copied to clipboard

TypeError: Cannot read property 'getContentTypes' of undefined

Open AlexandreVerhoye opened this issue 4 years ago • 6 comments

Hello ! First of all thanks for this package, It will be really useful to me 👍

I have this issue while trying to generate types. I created the getContentfulEnvironment in the root of the project like that :

const contentfulManagement = require("contentful-management");

module.exports = function () {
  const contentfulClient = contentfulManagement.createClient({
    accessToken: "myaccesstoken",
    host: "cdn.contentful.com",
  });

  return contentfulClient.getSpace("myspaceid").then((space) => {
    space.getEnvironment("master");
  });
};

then I just ran npm run contentful-typescript-codegen and I get this error :

TypeError: Cannot read property 'getContentTypes' of undefined

Thanks and have a great day !

AlexandreVerhoye avatar Nov 02 '21 14:11 AlexandreVerhoye

@AlexandreVerhoye it seems you need to return space.getEnvironment("master")

can you try this?

const contentfulManagement = require("contentful-management");

module.exports = function () {
  const contentfulClient = contentfulManagement.createClient({
    accessToken: "myaccesstoken",
    host: "cdn.contentful.com",
  });

  return contentfulClient.getSpace("myspaceid").then((space) => {
    return space.getEnvironment("master");
  });
};

sahildeliwala avatar Nov 10 '21 07:11 sahildeliwala

Hey, now I have this error :

NotFound: {
  "status": 404,
  "statusText": "Not Found",
  "message": "The resource could not be found.",
  "details": {},
  "request": {
    "url": "/spaces/xxxxxxxxx/environments/master",
    "headers": {
      "Accept": "application/json, text/plain, */*",
      "Content-Type": "application/vnd.contentful.management.v1+json",
      "X-Contentful-User-Agent": "sdk contentful-management.js/7.45.0; platform node.js/v14.18.1; os macOS/21.1.0;",
      "Authorization": "Bearer xxxxx",
      "user-agent": "node.js/v14.18.1",
      "Accept-Encoding": "gzip"
    },
    "method": "get"
  },
  "requestId": "xxxxxx"
}

AlexandreVerhoye avatar Nov 12 '21 14:11 AlexandreVerhoye

@AlexandreVerhoye hmmm... can you try just this? and make sure the Access token you add is your Personal Access Token. omit host and try.

const contentfulManagement = require("contentful-management");

module.exports = function () {
  const contentfulClient = contentfulManagement.createClient({
    accessToken: "myaccesstoken", 
  });

  return contentfulClient.getSpace("myspaceid").then((space) => {
    return space.getEnvironment("master");
  });
};

sahildeliwala avatar Nov 13 '21 05:11 sahildeliwala

I'm getting this error :

AccessTokenInvalid: {
  "status": 403,
  "statusText": "Forbidden",
  "message": "The access token you sent could not be found or is invalid.",
  "details": {},
  "request": {
    "url": "/spaces/xxxxx",
    "headers": {
      "Accept": "application/json, text/plain, */*",
      "Content-Type": "application/vnd.contentful.management.v1+json",
      "X-Contentful-User-Agent": "sdk contentful-management.js/7.45.0; platform node.js/v14.18.1; os macOS/21.1.0;",
      "Authorization": "Bearer ...xxxx",
      "user-agent": "node.js/v14.18.1",
      "Accept-Encoding": "gzip"
    },
    "method": "get"
  },
  "requestId": "c1d77801-035f-4a69-b6de-3ba849d66d38"
}

They are the same credential I'm using to fetch data on my nextjs project

AlexandreVerhoye avatar Nov 14 '21 15:11 AlexandreVerhoye

Based on my experience (and another issue posted here), it seems like if you are trying to hide your info in an environment variable and then access them in the .getContentfulEvironment.js file then it doesn't work properly (I got the exact same error messages). Once I hard entered the token, space, and environment names into the file it worked perfectly.

jaec0113 avatar Dec 06 '21 23:12 jaec0113

Might be late for this, but in my case it was the difference between tokens, the contentful-management library requires a different type of token that you can find under this section in settings > api keys

image

KacperBiedka avatar May 22 '22 13:05 KacperBiedka