Search code examples
meteorsendgridsendgrid-api-v3

Sendgrid import issue in Meteor


I'm trying to use sendgrid npm package in Meteor (on the server):

const sendgridMail = require('@sendgrid/mail');

Keep getting this error:

(STDERR) packages\modules.js:961
(STDERR) const {
(STDERR)       ^
(STDERR)
(STDERR) SyntaxError: Unexpected token {
(STDERR)     at Object.exports.runInThisContext (vm.js:53:16)
(STDERR)     at D:\myProject\.meteor\local\build\programs\server\boot.js:331:30
(STDERR)     at Array.forEach (native)
(STDERR)     at Function._.each._.forEach (C:\Users\user1\AppData\Local\.meteor\packages\meteor-tool\1.5.2\mt-os.windows.x86_32\dev_bundle\server-lib\node_modules\underscore\underscore.js:79:11)

Any ideas how to fix it?

Update: package.json includes the following dependencies:

"dependencies": {
    "@sendgrid/client": "^6.1.4",
    "@sendgrid/mail": "^6.1.4",
    "babel-runtime": "^6.20.0",
    "bcrypt": "^1.0.2",
    "body-parser": "^1.17.2",
    "card": "^2.3.0",
    "google-auth-library": "^0.10.0",
    "googleapis": "^21.3.0",
    "meteor-node-stubs": "~0.2.4",
    "moment": "^2.18.1",
    "pnotify": "^3.2.0",
    "shortid": "^2.2.8",
    "simpl-schema": "^0.3.1",
    "stripe": "^4.24.0"
}

Solution

  • The problem is that SendGrid SDK v6 requires Node.js version 6 and higher, but the one bundled in Meteor is 4.8.4:

    $ meteor node --version
    v4.8.4
    

    As stated in this issue, updating Node.js will help, but it's obviously can't be done with Meteor.

    I suggest you to use sendgrid npm package, this one works fine with Node.js v4.