Closed
Description
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"
+ "types": "./dist/vue.d.ts"
},
"require": "./index.js",
},
}
That part seems like a bug, right?