1

I'm trying to export some functions from a module and import the in other one like that :

import bcrypt from 'bcrypt'

const saltRounds = 10

function hashPassword(password) {
    let passwordHash = bcrypt.hash(password, saltRounds)
    return passwordHash
}

function verifyPassword(password, passwordHash) {
    return bcrypt.compareSync(password, passwordHash)

}

function randomTokenString() {
    return crypto.randomBytes(40).toString('hex')
}

function generateJwtToken(user) {
    return jwt.sign({ sub: user.id, id: user.id }, config.secret, { expiresIn: '15m' })
}

export default  { hashPassword, verifyPassword, randomTokenString, generateJwtToken }

import

import { hashPassword, verifyPassword, randomTokenString } from '../helpers/bcrypt.helper.js'

I got this error :

SyntaxError: The requested module '../helpers/bcrypt.helper.js' does not provide an export named 'hashPassword'

547n00n
  • 1,356
  • 6
  • 30
  • 55

2 Answers2

1

You can't export multiple defaults, if you want to export multiple functions then just add the export keyword before the function definition

export function hashPassword(password) {
    let passwordHash = bcrypt.hash(password, saltRounds)
    return passwordHash
}

export function verifyPassword(password, passwordHash) {
    return bcrypt.compareSync(password, passwordHash)

}

see more What is "export default" in JavaScript?

Jimmar
  • 4,194
  • 2
  • 28
  • 43
0

As an alternative, you can also export like this:

const bcrypt = require('bcrypt');

const saltRounds = 10
module.exports = {
    hashPassword: (password) => {
        let passwordHash = bcrypt.hash(password, saltRounds)
        return passwordHash
    },

    verifyPassword: (password, passwordHash) => {
        return bcrypt.compareSync(password, passwordHash)
    },

    randomTokenString: () => {
        return crypto.randomBytes(40).toString('hex')
    },

    generateJwtToken: (user) => {
        return jwt.sign({ sub: user.id, id: user.id }, config.secret, { expiresIn: '15m' })
    }
}
lousybear
  • 453
  • 3
  • 12