Reputation: 1152
I have installed meteorhacks:npm
and defined apn in packages.json {"apn": "1.6.2"}
. However, I get an error ReferenceError: require is not defined
when I run the following code:
var apn = Npm.require('apn'),
path = Npm.require('path'),
apnOptions = Meteor.settings.apnOptions || {},
alertSound = apnOptions.sound || "alert.aiff",
apnConnection
// default apn connection options
apnOptions = _.extend({
cert: path.join(appRootPath, "private", "cert.pem"),
key: path.join(appRootPath, "private", "key.pem"),
}, apnOptions)
apnConnection = new apn.Connection(apnOptions)
The full error message:
W20150116-23:30:51.097(2)? (STDERR)
W20150116-23:30:51.100(2)? (STDERR) /Users/Mika/.meteor/packages/meteor-tool/.1.0.38.zbazwc++os.osx.x86_64+web.browser+web.cordova/meteor-tool-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:173
W20150116-23:30:51.101(2)? (STDERR) throw(ex);
W20150116-23:30:51.101(2)? (STDERR) ^
W20150116-23:30:51.101(2)? (STDERR) ReferenceError: require is not defined
W20150116-23:30:51.102(2)? (STDERR) at app/node_modules/apn/lib/connection.js:1:49
W20150116-23:30:51.102(2)? (STDERR) at app/node_modules/apn/lib/connection.js:774:3
W20150116-23:30:51.106(2)? (STDERR) at /Users/Mika/Devaus/meteor/flashcards/.meteor/local/build/programs/server/boot.js:175:10
W20150116-23:30:51.107(2)? (STDERR) at Array.forEach (native)
W20150116-23:30:51.107(2)? (STDERR) at Function._.each._.forEach (/Users/Mika/.meteor/packages/meteor-tool/.1.0.38.zbazwc++os.osx.x86_64+web.browser+web.cordova/meteor-tool-os.osx.x86_64/dev_bundle/server-lib/node_modules/underscore/underscore.js:79:11)
W20150116-23:30:51.107(2)? (STDERR) at /Users/Mika/Devaus/meteor/flashcards/.meteor/local/build/programs/server/boot.js:86:5
My repo: https://github.com/mvaisanen/flashcards
Upvotes: 0
Views: 4456
Reputation: 64312
Use Meteor.npmRequire
insted of Npm.require
for packages loaded via meteorhacks:npm. For example:
var apn = Meteor.npmRequire('apn');
var path = Npm.require('path');
Also note that requiring an npm package will only work on the server, so make sure that code is in your /server
directory or guarded by Meteor.isServer
.
Upvotes: 1