Surprising (or incorrect) priorities with package.json exports fields? · Issue #46334 · microsoft/TypeScript (original) (raw)
I'm trying a scenario of module: nodenext
with Vue.js. I hit a few issues with resolution of declaration files.
Here's the current Vue.js declarations package.json
:
{ "name": "vue", "version": "3.2.20", "description": "The progressive JavaScript framework for buiding modern web UI.", "main": "index.js", "module": "dist/vue.runtime.esm-bundler.js", "types": "dist/vue.d.ts", // ... "exports": { ".": { "import": { "node": "./index.mjs", "default": "./dist/vue.runtime.esm-bundler.js" }, "require": "./index.js" }, // ... "./package.json": "./package.json" } // ... }
However, referencing this in a project results in the following error:
import * as Vue from "vue";
// ~~~~~
// error
// Could not find a declaration file for module 'vue'. 'USER_DIR/hackathon/vue-proj/node_modules/vue/index.js' implicitly has an 'any' type.
// Try npm i --save-dev @types/vue
if it exists or add a new declaration (.d.ts) file containing declare module 'vue';
This kind of makes sense - I think you could argue that this isn't configured right for moduleResolution: node12
or later.
I was able to get this working by adding
"exports": { ".": { "import": { "node": "./index.mjs", "default": "./dist/vue.runtime.esm-bundler.js" }, "require": "./index.js",
- "types": "./dist/vue.d.ts" }, }
But the following DID NOT work.
"exports": { ".": { "import": { "node": "./index.mjs", "default": "./dist/vue.runtime.esm-bundler.js"
}, "require": "./index.js", }, }"types": "./dist/vue.d.ts"
That part seems like a bug, right?