Home > database >  Newly made NPM package is found, but deeper import references are all unfound
Newly made NPM package is found, but deeper import references are all unfound

Time:09-15

This is my first go publishing an NPM package and I feel like a newb. My basic imports aren't working, both within the module itself and when trying to reference specific files within the package from outside. The whole npm publish -> npm install part works as expected.

The file structure is a ./lib directory, with a ./lib/data-types directory. The main files with the objects getting exported live in the lib, and some other "helper" files live in the data-types.

- index.js, etc
- /lib
-- connection.js
-- session.js
-- /data-types
--- point.js, etc

I have an index.js file that's just a passthrough for some other objects:

import Connection from "./lib/connection.js"
import Session from "./lib/session.js"
export default {
    Connection,
    Session,
}

And I've defined the main export and the data-types in package.json:

{
  "name": "ef-vue-crust",
  "type": "module",
  "main": "index.js",
  "exports": {
    "." : "./index.js",
    "./data-types/": "./lib/data-type/*.js"
  },
  ...
}

The basic import from my application seems to work, i.e. import {Connection} from 'ef-vue-crust', except for the aforementioned inner disconnect. index.js is unable to find the following files:

import Connection from "./lib/connection.js"
import Session from "./lib/session.js"

Module not found: Error: Can't resolve './lib/session.js' in 'C:\Projects\my-app\node_modules\ef-vue-crust'

Directly importing a file from the ./lib/data-type/ directory has the same issue in my application:

import Point from '@ef-vue-crust/data-types/point.js';

Does anyone see the disconnect?

CodePudding user response:

Part 1: changed export default {} to export {} in index.js.

Part 2: looks like I was missing an * in the exports:

{
  "name": "ef-vue-crust",
  "type": "module",
  "main": "index.js",
  "exports": {
    "." : "./index.js",
    "./data-types/*": "./lib/data-type/*.js"
  },
  ...
}

And finally: I had some strings flat out not matching in the imports, which became obvious once the above was fixed.

So I suppose the answer is "attention to detail"

  • Related