oeuillot / upnpserver

Fast and light upnp server for node
GNU General Public License v2.0
181 stars 47 forks source link

TypeError: options must be a string or an object #59

Closed ajmas closed 8 years ago

ajmas commented 8 years ago

I am getting a "TypeError: options must be a string or an object" error, showing the stack trace I see:

TypeError: options must be a string or an object
    at new ReadStream (fs.js:1623:11)
    at Object.fs.createReadStream (fs.js:1608:10)
    at openStream (/Users/ajmas/Development/musicserver/node_modules/upnpserver/lib/contentProviders/file.js:87:23)
    at FileContentProvider.createReadStream (/Users/ajmas/Development/musicserver/node_modules/upnpserver/lib/contentProviders/file.js:134:3)
    at Audio_MusicMetadata.prepareNode (/Users/ajmas/Development/musicserver/node_modules/upnpserver/lib/contentHandlers/audio_musicmetadata.js:28:41)
    at prepareNode (/Users/ajmas/Development/musicserver/node_modules/upnpserver/lib/contentHandlers/contentHandler.js:25:10)
    at /Users/ajmas/Development/musicserver/node_modules/upnpserver/lib/asyncEventEmitter.js:115:19
    at /Users/ajmas/Development/musicserver/node_modules/upnpserver/node_modules/async/lib/async.js:162:20
    at iterate (/Users/ajmas/Development/musicserver/node_modules/upnpserver/node_modules/async/lib/async.js:256:13)
    at Object.async.forEachOfSeries.async.eachOfSeries (/Users/ajmas/Development/musicserver/node_modules/upnpserver/node_modules/async/lib/async.js:275:9)

The fix would appear to be changing the call to createReadStream() in audio_musicdata.js, such that

  node.service.getContentProvider(path).createReadStream(
      null,
      path,
      null,
      function(error, stream) {

becomes:

  node.service.getContentProvider(path).createReadStream(
      null,
      path,
      { },
      function(error, stream) {

Using node.js v4.4.0 on MacOS 10.11.5, upnpserver 2.1.3

ajmas commented 8 years ago

Just seen that the 2.1.3 code base is really old and doesn't represent current head.