Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ParcelJS does not bundle imported js library

I have a simple NodeJS app (A Cloudflare Worker).

In the main typescript file (index.ts) I import the handler module which has this as the first line: const Monitor = import('ping-monitor')

ping-monitor is a dependency in package.json:

"dependencies": {
    "ping-monitor": "^0.6.2"
  }

Now when I run parcel build src/index.ts the output in the dist has: var $1ZQrD$pingmonitor = require("ping-monitor");

So the contents of ping-monitor are not bundled properly. And when I try to run this locally via wrangler dev (output is dist/worker.js) it complains: Uncaught ReferenceError: require is not defined.

How can I tell ParcelJS to bundle ping-monitor inside the output?

like image 611
Mahdi Avatar asked Apr 25 '26 03:04

Mahdi


1 Answers

By default, parcel won't bundle any dependencies for nodejs build targets. If you want to bundle all dependencies you can use the includeNodeModules option (see docs), like this:

{
   ...
   "main": "dist/worker.js",
   "targets": {
      "main": {
         "includeNodeModules": true
      }
   }
}

(You can also specify "whitelist" of modules to include).

like image 113
Andrew Stegmaier Avatar answered Apr 27 '26 17:04

Andrew Stegmaier



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!