ai / nanoid

A tiny (124 bytes), secure, URL-friendly, unique string ID generator for JavaScript

Home Page:https://zelark.github.io/nano-id-cc/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cannot read properties of undefined (reading 'length')

maxwell-etz opened this issue · comments

I have been trying to use Nanoid in my Nestjs application. I keeps getting "Cannot read properties of undefined (reading 'length')".

TypeError: Cannot read properties of undefined (reading 'length')
at customRandom (/home/maxwell/Documents/projects/js/project-damsyn/services/main/node_modules/nanoid/index.cjs:26:46)
at customAlphabet (/home/maxwell/Documents/projects/js/project-damsyn/services/main/node_modules/nanoid/index.cjs:57:42)
at new ProductOptionGroupService (/home/maxwell/Documents/projects/js/project-damsyn/services/main/src/product/product-option-group/product-option-group.service.ts:9:26)
at Injector.instantiateClass (/home/maxwell/Documents/projects/js/project-damsyn/services/main/node_modules/@nestjs/core/injector/injector.js:365:19)
at callback (/home/maxwell/Documents/projects/js/project-damsyn/services/main/node_modules/@nestjs/core/injector/injector.js:65:45)
at Injector.resolveConstructorParams (/home/maxwell/Documents/projects/js/project-damsyn/services/main/node_modules/@nestjs/core/injector/injector.js:144:24)
at Injector.loadInstance (/home/maxwell/Documents/projects/js/project-damsyn/services/main/node_modules/@nestjs/core/injector/injector.js:70:13)
at Injector.loadProvider (/home/maxwell/Documents/projects/js/project-damsyn/services/main/node_modules/@nestjs/core/injector/injector.js:97:9)
at /home/maxwell/Documents/projects/js/project-damsyn/services/main/node_modules/@nestjs/core/injector/instance-loader.js:56:13
at async Promise.all (index 4)
at InstanceLoader.createInstancesOfProviders (/home/maxwell/Documents/projects/js/project-damsyn/services/main/node_modules/@nestjs/core/injector/instance-loader.js:55:9)
at /home/maxwell/Documents/projects/js/project-damsyn/services/main/node_modules/@nestjs/core/injector/instance-loader.js:40:13
at async Promise.all (index 20)
at InstanceLoader.createInstances (/home/maxwell/Documents/projects/js/project-damsyn/services/main/node_modules/@nestjs/core/injector/instance-loader.js:39:9)
at InstanceLoader.createInstancesOfDependencies (/home/maxwell/Documents/projects/js/project-damsyn/services/main/node_modules/@nestjs/core/injector/instance-loader.js:22:13)
at /home/maxwell/Documents/projects/js/project-damsyn/services/main/node_modules/@nestjs/core/nest-factory.js:108:17
at Function.asyncRun (/home/maxwell/Documents/projects/js/project-damsyn/services/main/node_modules/@nestjs/core/errors/exceptions-zone.js:22:13)
at NestFactoryStatic.initialize (/home/maxwell/Documents/projects/js/project-damsyn/services/main/node_modules/@nestjs/core/nest-factory.js:106:13)
at NestFactoryStatic.create (/home/maxwell/Documents/projects/js/project-damsyn/services/main/node_modules/@nestjs/core/nest-factory.js:42:9)
at bootstrap (/home/maxwell/Documents/projects/js/project-damsyn/services/main/src/main.ts:8:15)

Show me how do you call Nano ID?

import { customAlphabet } from 'nanoid'
nanoid = customAlphabet('1234567890abcdef', 10)
model.id = this.nanoid() //=> "4f90d13a42"

Why it is this?

I am unable to use const in front nanoid when declaring. This is how I am using it in my project. nanoid version (3.0.0)

import { customAlphabet } from 'nanoid';

@Injectable()
export class ProductOptionGroupService {
  nanoid = customAlphabet(process.env.NANOID_GEN, 8);
  constructor(
    @InjectModel(ProductGroupOptions)
    private productModel: typeof ProductGroupOptions,
  ) {}

  async create(adminId: string, dto: CreateProductOptGrpDto) {
    const product = await this.productModel.create({
      adminId,
      name: dto.name,
      createdb: adminId,
      code: this.nanoid(),
    });
    return product;
  }
}

More likely that process.env.NANOID_GEN is empty.

Error tells that alphabet is undefined.

Yeah. It worked. Thanks alot. I forgot to add NANOID_GEN to the env

You can sponsor me here for helping debugging your commercial code

https://github.com/sponsors/ai