Why isn't a node module that I can get from NPM found from Heroku?

Locally, I can run:

npm install oscar@0.2.0

To install this package: https://npmjs.org/package/oscar

And you can see on that page that the current version is 0.2.0.

Yet, when my package.json contains:

"dependencies": {
  "oscar": "~0.2.0",
  //...
}

... and I push to Heroku, I get this response:

-----> Installing dependencies with npm
       npm ERR! Error: No compatible version found: oscar@'>=0.2.0- <0.3.0-'
       npm ERR! Valid install targets:
       npm ERR! ["0.1.0","0.1.1","0.1.2"]
       npm ERR!     at installTargetsError (/tmp/node-npm-Sezl/lib/cache.js:424:10)
       npm ERR!     at /tmp/node-npm-Sezl/lib/cache.js:406:17
       npm ERR!     at saved (/tmp/node-npm-Sezl/lib/utils/npm-registry-client/get.js:136:7)
       npm ERR!     at cb (/tmp/node-npm-Sezl/node_modules/graceful-fs/graceful-fs.js:36:9)
       npm ERR! Report this *entire* log at:
       npm ERR!     <http://github.com/isaacs/npm/issues>
       npm ERR! or email it to:
       npm ERR!     <npm-@googlegroups.com>
       npm ERR! 
       npm ERR! System Linux 2.6.32-348-ec2
       npm ERR! command "/tmp/node-node-yaOa/bin/node" "/tmp/node-npm-Sezl/cli.js" "install" "--production"
       npm ERR! cwd /tmp/build_13f8kjrsns2wh
       npm ERR! node -v v0.4.7
       npm ERR! npm -v 1.0.106
       npm ERR! 
       npm ERR! Additional logging details can be found in:
       npm ERR!     /tmp/build_13f8kjrsns2wh/npm-debug.log
       npm not ok
 !     Failed to install --production dependencies with npm
 !     Heroku push rejected, failed to compile Node.js app

To git@heroku.com:xxxxx-xxxxxx-nnnn.git
 ! [remote rejected] master -> master (pre-receive hook declined)

If it has any bearing, here's the node+npm versions my package.json is specifying for Heroku:

"engines": {
  "node": "0.8.x",
  "npm":  "1.1.x"
},

What am I doing wrong? Why isn't the latest version of this package available?

Whoops, the answer turned out to be that the last code-sample from my question hadn't yet been committed, so Heroku was still using older versions of NPM and Node. Committing that block and re-pushing fixed it.