TypeError: WooCommerceRestApi is not a constructor
See original GitHub issueI was using NPM @woocommerce/woocommerce-rest-api successfully to manage API requests to Woocommerce/ WP website.
Was using babel and CJS version: ` const WooCommerceRestApi = require(“@woocommerce/woocommerce-rest-api”).default;
const api = new WooCommerceRestApi({ url: “http://example.com”, consumerKey: “ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”, consumerSecret: “cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”, version: “wc/v3” });`
But since Node 14 is offering a simple way to use ESM I have added the following configuration to the package.json, so I can use the import statement: “type”: “module”
So I should have been able to use this format:
`import WooCommerceRestApi from “@woocommerce/woocommerce-rest-api”;
const api = new WooCommerceRestApi({ url: “http://example.com”, consumerKey: “ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”, consumerSecret: “cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”, version: “wc/v3” });`
But now I get this error:
`file:///xxxxxx/test.js:5 const api = new WooCommerceRestApi({ ^
TypeError: WooCommerceRestApi is not a constructor at file:///xxxxxxxx/test.js:5:13 at ModuleJob.run (internal/modules/esm/module_job.js:138:23) at async Loader.import (internal/modules/esm/loader.js:178:24)`
Why would that happen?
Issue Analytics
- State:
- Created 3 years ago
- Reactions:3
- Comments:8

Top Related StackOverflow Question
The reason it doesn’t work is because of a missing section in package.json telling node which file to import, so it chooses the CJS code. As a temporary fix change the import to explicitly choose the index.mjs file like below.
import WooCommerceRestApi from "@woocommerce/woocommerce-rest-api/index.mjs"For anyone who comes here in the future looking for an solution to this error when using the ESM version, here’s a solution that worked for me:
From there, you can just use
WooCommerceRestApias described in the ESM example.