Search code examples
javascriptnode.jsspookyjs

SpookyJS: failed to execute hello.js after adding some dependencies


I git clone a spookyjs from github to my shell, then npm install and run node examples/hello.js.

Everything goes well and hello.js outputs:

Hello, from Spooky the Tuff Little Ghost - Wikipedia, the free encyclopedia

Then I add some dependencies to the package.json:

From

  "dependencies": {
    "underscore": "1.3.x",
    "async": "0.1.x",
    "tiny-jsonrpc": "0.2.x",
    "carrier": "0.1.x",
    "duplexer": "0.0.x",
    "readable-stream": "~1.0.2"
  }

To

  "dependencies": {
    "underscore": "1.3.x",
    "async": "0.1.x",
    "tiny-jsonrpc": "0.2.x",
    "carrier": "0.1.x",
    "duplexer": "0.0.x",
    "readable-stream": "~1.0.2",

    "express": "^4.13.4",
    "bluebird": "^3.3.4",
    "body-parser": "~1.13.2",
    "consul": "^0.23.0",
    "cookie-parser": "~1.3.5",
    "debug": "~2.2.0",
    "express": "~4.13.1",
    "jade": "~1.11.0",
    "morgan": "~1.6.1",
    "native-dns": "^0.7.0",
    "node-phantom": "^0.2.5",
    "serve-favicon": "~2.3.0",
    "util": "^0.10.3",
    "webpage": "^0.3.0"
  }

Then I npm install, and run node examples/hello.js again. But now it failed with weird logs:

{ id: 1,
  code: -32603,
  message: 'undefined is not a constructor (evaluating \'require(\'webpage\').create()\')' }
{ id: 2, code: -32603, message: 'Type error' }
{ id: 3, code: -32603, message: 'Type error' }

My question is, why does adding some dependencies to SpookyJS lead to such an error and how can this error be avoided?


Solution

  • Posted that question to the github. The main developer of SpookyJS(lawnsea) answered me:

    Sounds like that package (webpage) is conflicting with the native PhantomJS module webpage. You will not be able to use those together.

    I don't think you'll be able to use a package named webpage. You could create another npm package that wraps it under a different name.