Checks don't work for modules
Opened this issue · 1 comments
olebedev commented
Some of the NPM modules utilise new feature of Node.js that is called modules, that is declared as:
{
...
"type": "module,
...
}
in package.json
file. And the current implementation of checks, like:
node -e 'require("/nix/store/4dj4m2yanj5z1182ji9y47vir6w723bk-formdata-polyfill-4.0.10/lib")
doesn't work with that new module
type.
I found that for the packages of the module
type, this check would work:
node --input-type=module -e 'import "/nix/store/4dj4m2yanj5z1182ji9y47vir6w723bk-formdata-polyfill-4.0.10/lib/formdata.min.js"'
that is, the check needs to add --input-type=module
option and specify the file explicitly.
olebedev commented
As a workaround for the projects that face this check issue:
let
env = pkgs.js2nix {
package-json = ./package.json;
yarn-lock = ./yarn.lock;
overlays = [
(self: super: {
# TODO: remove once this https://github.com/canva-public/js2nix/issues/20 is resolved
buildNodeModule = pkgs.lib.makeOverridable
(args: (super.buildNodeModule args).override { doCheck = false; });
})
];
};
in env.nodeModules
It disables checks for the whole dependency closure.