javascript - TypeError:WooCommerceRestApi 不是构造函数
问题描述
我成功地使用 NPM @woocommerce/woocommerce-rest-api来管理对 Woocommerce/WP 网站的 API 请求。
正在使用 babel 和 CJS 版本:
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"
});
但是由于 Node 14 提供了一种使用 ESM 的简单方法,我在 package.json 中添加了以下配置,因此我可以使用 import 语句:
"type": "module"
所以我应该能够使用这种格式:
import WooCommerceRestApi from "@woocommerce/woocommerce-rest-api";
const api = new WooCommerceRestApi({
url: "http://example.com",
consumerKey: "ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
consumerSecret: "cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
version: "wc/v3"
});
但现在我得到这个错误:
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)
为什么会这样?
解决方案
您可能已经解决了这个问题,但我自己也遇到了这个问题,在我看来,esm 加载程序默认为库的 cjs 版本。
这对我有用:
import pkg from '@woocommerce/woocommerce-rest-api';
const WooCommerceRestApi = pkg.default;
是的,这不是一个很好的解决方案,但它可能对其他人有帮助或启发某人进一步解释。;)
推荐阅读
- android - Android Seekbar 值在某些设备上不会为负数
- r - 对数据表进行排序后,我可以选择一个值,取消排序,然后将该值及其下方的 5 个值保存到数据框中吗?
- python-sphinx - Sphinx readthedocs 安装目录的布局与在我自己的机器上安装不同。如何使它们相同?
- python - Socket编程+Python中的HTTP1.1
- c# - 有没有办法在统一 3d 中拖放 UI 按钮?
- c++ - 带有继承的 C++ 模板的生成器模式
- c++ - 与作用域相关的局部变量定义,C++
- java - 无法从 java 程序访问数据
- data-structures - 用另一个数据结构初始化 Rust 中数据结构的字段
- python - 使用python数据类时出现TypeError