On 03/05/2022 13:15, Pirate Praveen wrote:
On ചൊ, മേയ് 3 2022 at 06:41:01 വൈകു +0800 +0800, Ying-Chun Liu (PaulLiu) <[email protected]> wrote:I think that is how ES module standard is supposed to work. You can add a symlink to node_modulesHi Praveen,Sorry for bothering but I just got lots of questions about using ES modules and I'm not sure who to ask. I tried to read the history of Debian wiki pages about ES modules and found you.Recently I've updated node-leven package to the latest upstream version and it becomes an ES module now.To use ES modules, I wrote a simple "mjs" script file: import leven from '/usr/share/nodejs/leven/index.js'; console.log(leven('test', 'test2')); // output: 1 The first question is why I cannot use "import leven from 'leven';"?mkdir -p node_modules ln -s /usr/share/nodejs/leven node_modulesThere is debian/nodejs/extlinks in pkg-js-tools to help with this symlink creation.
or by hand `pkgjs-ln leven`
I think Jeremy Lal mentioned in the past that global path for ES modules will not be supported.I got ERR_MODULE_NOT_FOUND if I don't use the full path. But packages like assert works without full path. Not sure if I got things wrong. The second question is more complicated. I tried to use leven from a CJS module. It works if I use dynamic import with full path: var leven; async function test() { leven = await import ('/usr/share/nodejs/leven/index.js'); leven = leven.default; console.log(leven('test', 'test1')); // output 1 } test(); However, it seems to me that with CJS, there's no top-level await. So I can only wrapping things in an async function.
Jest, await is available only in async functions. But for a simle script, you can use zx which accepts await
But this is a bit trouble. How can I simply convert require('leven') used in node-commist if there's no top-level await?
If leven is a pure ES module, you can build CJS files using `mjs2cjs -a` in your debian/rules (it requires rollup and node-rollup-plugin-node-resolve). This will modify package.json and build a commonjs file, usable with require (tested, it works fine)
Then you can add a custom test:
$ cat >debian/tests/control <<EOF
Test-Command: cd / && node -e 'require("leven")'
Depends: @, nodejs
Features: test-name=commonjs
EOF
I cannot wrap whole node-commist inside an async function because it should work like a library.
Then node-commist will work ;-) -- Pkg-javascript-devel mailing list [email protected] https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/pkg-javascript-devel
