#326·ndb

Crashes on Ndb.FileSystem.getMetadata

Author: wesbosCreated Feb 12, 2021Updated Nov 17, 2022

Steps to reproduce

Tell us about your environment:

  • ndb version: 1.1.5
  • Platform / OS version: Mac OS Catalina
  • Node.js version: 15.6.0

When running NDB on a basic Next.js project, it crashes.

package.json:

json
{
  "name": "ndb",
  "scripts": {
    "dev": "next"
  },
  "dependencies": {
    "next": "^10.0.6",
    "react": "^17.0.1",
    "react-dom": "^17.0.1"
  }
}

pages/index.js

javascript
const Page = () => <p>hi</p>
export default Page;

Then run ndb npm run dev in your console. As soon as you visit the site, Next.js builds that first page and the whole thing crashes:

 ⮀ ndb npm run dev

> dev
> next

ready - started server on 0.0.0.0:3000, url: http://localhost:3000
event - compiled successfully
event - build page: /
wait  - compiling...
event - compiled successfully
/usr/local/lib/node_modules/ndb/services/ndd_service.js:21
  throw error;
  ^

Error: Error: not implemented
Error: not implemented
    at Ndb.FileSystem.getMetadata (https://domain/ndb.js:3:175663)
    at Persistence.FileSystemWorkspaceBinding.FileSystem.requestMetadata (https://domain/ndb.js:3:131825)
    at Workspace.UISourceCode.requestMetadata (https://domain/ndb.js:1:648280)
    at n (https://domain/ndb.js:3:141810)
    at https://domain/ndb.js:3:141759
    at Array.map (<anonymous>)
    at Persistence.Automapping._pullMetadatas (https://domain/ndb.js:3:141752)
    at Persistence.Automapping._createBinding (https://domain/ndb.js:3:141234)
    at Persistence.Automapping._computeNetworkStatus (https://domain/ndb.js:3:138667)
    at Persistence.Automapping._onUISourceCodeAdded (https://domain/ndb.js:3:137732)
    at Rpc.dispatchMessageLocally_ (/usr/local/lib/node_modules/ndb/node_modules/carlo/rpc/rpc.js:423:16)
    at Rpc.routeMessage_ (/usr/local/lib/node_modules/ndb/node_modules/carlo/rpc/rpc.js:371:12)
    at process.emit (node:events:379:20)
    at emit (node:internal/child_process:918:12)
    at processTicksAndRejections (node:internal/process/task_queues:82:21)
node:events:356
      throw er; // Unhandled 'error' event
      ^

Error [ERR_IPC_CHANNEL_CLOSED]: Channel closed
    at new NodeError (node:internal/errors:329:5)
    at ChildProcess.target.send (node:internal/child_process:722:16)
    at Rpc.routeMessage_ (/usr/local/lib/node_modules/ndb/node_modules/carlo/rpc/rpc.js:379:9)
    at /usr/local/lib/node_modules/ndb/node_modules/carlo/lib/carlo.js:388:71
    at Page._onBindingCalled (/usr/local/lib/node_modules/ndb/node_modules/puppeteer-core/lib/Page.js:548:56)
    at CDPSession.<anonymous> (/usr/local/lib/node_modules/ndb/node_modules/puppeteer-core/lib/Page.js:136:54)
    at CDPSession.emit (node:events:379:20)
    at CDPSession._onMessage (/usr/local/lib/node_modules/ndb/node_modules/puppeteer-core/lib/Connection.js:200:12)
    at Connection._onMessage (/usr/local/lib/node_modules/ndb/node_modules/puppeteer-core/lib/Connection.js:112:17)
    at PipeTransport._dispatch (/usr/local/lib/node_modules/ndb/node_modules/puppeteer-core/lib/PipeTransport.js:65:24)
Emitted 'error' event on ChildProcess instance at:
    at node:internal/child_process:726:35
    at processTicksAndRejections (node:internal/process/task_queues:76:11) {
  code: 'ERR_IPC_CHANNEL_CLOSED'
}

What is the expected result?

It doesn't crash

What happens instead?

It crashes