user3483339
user3483339

Reputation: 29

express-stormpath request.uri is undefined

I'm trying to run express-stormpath on an aws linux instance that is successfully serving. I've double and tripled checked my keys and app hrefs and assured they were connected to applications. I've gone to a fresh vm and used the simplest service to ensure something wasn't awry in the VM where I am successfully serving a sailsjs app.

var express = require('express');
var stormpath = require('express-stormpath');

var app = express();

var stormpathInit = function(req,res,next) {
    stormpath.init(app, {
        apiKey: {
            id:'##########',
            secret: '############',
        },
        secretKey: 'theLongRoadToNowhere',
        application: 'https://api.stormpath.com/v1/applications/###',
        website: true,
        api: true
    });
    next();
};

app.use(stormpathInit);

app.get('/', function (req, res) {
    res.send('<a href="/login">Login</a>');
});

/* and this failed as well with the same output only on server startup

app.use(stormpath.init(app, {
    apiKey: {
        id:'4SL89BZ47ALZX6T9W7S4NPUXS',
        secret: 's0dA33RPTAqcDAcdbwj6q9i0qDDEr0XyHhsBmjF34SY',
    },
    secretKey: 'theLongRoadToFreedomWillPayDividends',
    application: 'https://api.stormpath.com/v1/applications/1wShCspJ1NFnT1N1UM1laJ',
    website: true,
    api: true
}));
*/

app.listen(1337);

///////////////////////
The error output:

req.uri = undefined
/var/www/stormpath/node_modules/express-stormpath/node_modules/stormpath/lib/ds/RequestExecutor.js:70
      throw new Error('request.uri field is required.');
            ^
Error: request.uri field is required.
    at RequestExecutor.executeRequest [as execute] (/var/www/stormpath/node_modules/express-stormpath/node_modules/stormpath/lib/ds/RequestExecutor.js:70:13)
    at doRequest (/var/www/stormpath/node_modules/express-stormpath/node_modules/stormpath/lib/ds/DataStore.js:277:27)
    at onCacheResult (/var/www/stormpath/node_modules/express-stormpath/node_modules/stormpath/lib/ds/DataStore.js:301:5)
    at Array.<anonymous> (/var/www/stormpath/node_modules/express-stormpath/node_modules/stormpath/lib/cache/Cache.js:54:14)
    at DisabledCache.get.DisabledCache.set.DisabledCache.delete.DisabledCache.clear.DisabledCache.size (/var/www/stormpath/node_modules/express-stormpath/node_modules/stormpath/lib/cache/DisabledCache.js:11:62)
    at Cache.get (/var/www/stormpath/node_modules/express-stormpath/node_modules/stormpath/lib/cache/Cache.js:52:14)
    at CacheHandler.getCachedResource [as get] (/var/www/stormpath/node_modules/express-stormpath/node_modules/stormpath/lib/cache/CacheHandler.js:91:51)
    at Object.executeRequest [as exec] (/var/www/stormpath/node_modules/express-stormpath/node_modules/stormpath/lib/ds/DataStore.js:294:22)
    at DataStore.getResource (/var/www/stormpath/node_modules/express-stormpath/node_modules/stormpath/lib/ds/DataStore.js:122:16)
    at Client.getResource (/var/www/stormpath/node_modules/express-stormpath/node_modules/stormpath/lib/Client.js:313:38)

Any guidance is appreciated...

Upvotes: 3

Views: 407

Answers (2)

Dsel
Dsel

Reputation: 1037

Unfortunately the answer from photon did not work for me, but after communicating with Stormpath support (which was very helpful) the following fixed my problem:

Set environment variable STORMPATH_APPLICATION_HREF by running this in the shell:

export STORMPATH_APPLICATION_HREF=<YourAppsHREF>

Hopefully this will work for others as well.

The problem seems to be a small typo in the stormpath documentation. They currently instruct you to set an environment variable called STORMPATH_CLIENT_APPLICATION_HREF. This is incorrect, it should be STORMPATH_APPLICATION_HREF as shown above.

Upvotes: 3

photon
photon

Reputation: 616

I had the same problem and after looking at the current default options for the Stormpath middleware, changing the following line resolved my issue.

Before

application: 'https://api.stormpath.com/v1/applications/1wShCspJ1NFnT1N1UM1laJ'

After

application: {
    href: 'https://api.stormpath.com/v1/applications/1wShCspJ1NFnT1N1UM1laJ'
}

Upvotes: 2

Related Questions