This repository was archived by the owner on Aug 13, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
This repository was archived by the owner on Aug 13, 2022. It is now read-only.
Upstream Bug (?): Arcane resolution rules with package.json #14
Copy link
Copy link
Open
Labels
bugSomething isn't workingSomething isn't working
Description
For a contrived example like:
// pkgs/index.js
const dep = require("./dep");
console.log("TODO HERE", { dep });
// pkgs/dep/deeper/index.js
module.exports = "deeper index";
// pkgs/dep/deeper/package.json
{
"main": "diff.js"
}
// pkgs/dep/deeper/diff.js
module.exports = "diff";
// pkgs/dep/index.js
module.exports = "dep index";
// pkgs/dep/package.json
{
"main": "deeper"
}Node.js resolves thusly:
$ node pkgs
TODO HERE { dep: 'deeper index' }which means pkgs/dep/package.json is read, but pkgs/dep/deeper/package.json is not, instead just using pkgs/dep/deeper/index.js.
In trace-deps, the resolve library instead comes up with our traced deps as:
// out/pkgs/index.js
const dep = require("./dep");
console.log("TODO HERE", { dep });
// out/pkgs/dep/deeper/package.json
{
"main": "diff.js"
}
// out/pkgs/dep/deeper/diff.js
module.exports = "diff";
// out/pkgs/dep/package.json
{
"main": "deeper"
}
// out/package.json
{
/* snipped */
}The problem is for the nested load of deeper, resolve() is using deeper/package.json:main and real Node.js doesn't instead using deeper/index.js directly, which we see in output here:
$ node out/pkgs/index.js
internal/modules/cjs/loader.js:305
throw err;
^
Error: Cannot find module '/Users/rye/Desktop/TD_TEST/out/pkgs/dep/deeper'. Please verify that the package.json has a valid "main" entry
at tryPackage (internal/modules/cjs/loader.js:297:19)
at Function.Module._findPath (internal/modules/cjs/loader.js:528:18)
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:780:27)
at Function.Module._load (internal/modules/cjs/loader.js:686:27)
at Module.require (internal/modules/cjs/loader.js:848:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object.<anonymous> (/Users/rye/Desktop/TD_TEST/out/pkgs/index.js:1:13)
at Module._compile (internal/modules/cjs/loader.js:955:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
at Module.load (internal/modules/cjs/loader.js:811:32) {
code: 'MODULE_NOT_FOUND',
path: '/Users/rye/Desktop/TD_TEST/out/pkgs/dep/package.json',
requestPath: './dep'
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working