I'm trying to send an email from my backend. When I get to the sendgrid.send-function, my server crashes with the following:
events.js:174
throw er; // Unhandled 'error' event
^
TypeError: Cannot read property 'client' of undefined
at setApiKey (/home/jeremy/Documents/Workspace/assetregister-server/node_modules/@sendgrid/mail/src/classes/mail-service.js:35:10)
at /home/jeremy/Documents/Workspace/assetregister-server/dist/models/user.js:184:27
at nextTask (/home/jeremy/Documents/Workspace/assetregister-server/node_modules/async/dist/async.js:5324:14)
at next (/home/jeremy/Documents/Workspace/assetregister-server/node_modules/async/dist/async.js:5331:9)
at /home/jeremy/Documents/Workspace/assetregister-server/node_modules/async/dist/async.js:969:16
at /home/jeremy/Documents/Workspace/assetregister-server/dist/models/user.js:176:11
at /home/jeremy/Documents/Workspace/assetregister-server/node_modules/mongoose/lib/model.js:4698:16
at /home/jeremy/Documents/Workspace/assetregister-server/node_modules/mongoose/lib/utils.js:263:16
at model.$__save.error (/home/jeremy/Documents/Workspace/assetregister-server/node_modules/mongoose/lib/model.js:479:7)
at /home/jeremy/Documents/Workspace/assetregister-server/node_modules/kareem/index.js:315:21
at next (/home/jeremy/Documents/Workspace/assetregister-server/node_modules/kareem/index.js:209:27)
at /home/jeremy/Documents/Workspace/assetregister-server/node_modules/kareem/index.js:182:9
at process.nextTick (/home/jeremy/Documents/Workspace/assetregister-server/node_modules/kareem/index.js:499:38)
at process._tickCallback (internal/process/next_tick.js:61:11)
setApiKey with the api key parametersend with the message objectinstalled the sendgrid-nodejs npm package
Imported var SendGrid = require('sendgrid-nodejs').SendGrid; in my class
Set var sendgrid = new SendGrid("sendgrid username here", "api key here");
And then running:
import { setApiKey, send } from '@sendgrid/mail';
setApiKey(config.mail_server_settings.api_key)
const msg = {
to: user.email,
from: {
name: 'The Sengrid Mailer',
email: '[email protected]',
},
subject: 'New mail for you !',
text: 'This is my message !',
};
send(msg, function(err, data) {
if (err) {
console.error(err);
};
I had the following giving me the same error in my TS code:
import { setApiKey } from '@sendgrid/mail';
//..
setApiKey(config.mail_server_settings.api_key)
I was able to fix this in Typescript by just doing the following:
import * as sendgrid from '@sendgrid/mail';
//...
sendgrid.setApiKey(apiKey);
Most helpful comment
I had the following giving me the same error in my TS code:
I was able to fix this in Typescript by just doing the following: