Search code examples
databasenode.jsloopbackjs

Loopback: Cannot find module 'negotiator'


I'm trying to use Loopback to create an api for my existing database. When I try to 'discover' the model, I get this error:

Message: Cannot find module 'negotiator'
Request: /workspace/api/DataSourceDefinitions/server.tweetvtds/testConnection
Staus: 500
 Error: Cannot find module 'negotiator'
  at Function.Module._resolveFilename (module.js:336:15)
  at Function.Module._load (module.js:278:25)
  at Module.require (module.js:365:17)
  at require (module.js:384:17)
  at Object.<anonymous> (~/lb/node_modules/loopback/node_modules/express/node_modules/accepts/index.js:1:80)
  at Module._compile (module.js:460:26)
  at Object.Module._extensions..js (module.js:478:10)
  at Module.load (module.js:355:32)
  at Function.Module._load (module.js:310:12)
  at Module.require (module.js:365:17)

I read elsewhere that I should try:

# uninstall the existing version
npm uninstall -g generator-loopback
# install it again
npm install -g generator-loopback

But that didn't help. What does this error mean and how do I fix it?


Solution

  • It turns out that the initial build of the project didn't fully complete.

    During the initial build, Loopback printed the following:

    I'm all done. Running npm install for you to install the required
    dependencies. If this fails, try running the command yourself.
    
    create .editorconfig
    create .jshintignore
    create .jshintrc
    create README.md
    create server/boot/authentication.js
    create server/boot/explorer.js
    create server/boot/rest-api.js
    create server/boot/root.js
    create server/middleware.json
    create server/server.js
    create .gitignore
    create client/README.md
    

    It failed to complete this step; however, running 'npm install' myself didn't fix the problem for some reason. So, I just built a new loopback project and everything is working fine now.