【发布时间】:2022-01-16 15:55:42
【问题描述】:
我想在我的 webpack/typescript 项目中使用“virtual-select-plugin”库。它没有类型定义。该库是通过 npm 安装的。在浏览器中出现错误:
TypeError: virtual_select_plugin__WEBPACK_IMPORTED_MODULE_13___default(...).init is not a function
Typescript 和 webpack 不会抱怨。
Webpack 生成所需的东西,就像它为 bootstrap、flickity 和其他运行良好的东西所做的那样:
...
/* harmony import */ var flickity__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flickity */ "./node_modules/flickity/js/index.js");
/* harmony import */ var flickity__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flickity__WEBPACK_IMPORTED_MODULE_2__);
...
/* harmony import */ var virtual_select_plugin__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! virtual-select-plugin */ "./node_modules/virtual-select-plugin/dist/virtual-select.min.js");
/* harmony import */ var virtual_select_plugin__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(virtual_select_plugin__WEBPACK_IMPORTED_MODULE_13__);
...
我注意到var flickity__WEBPACK_IMPORTED_MODULE_2__ 包含一个具有属性、函数等的对象,但var virtual_select_plugin__WEBPACK_IMPORTED_MODULE_13__ 只是一个空对象。来自 virtual-select-plugin 的代码稍后会在包中导入,并且是 "./node_modules/virtual-select-plugin/dist/virtual-select.min.js" 文件的内容。
我在 decs.d.ts 中添加了一个 typedef:
declare module 'virtual-select-plugin'
我使用以下方式导入插件:
import VirtualSelect from 'virtual-select-plugin';
并且想稍后调用init函数:
// Browser says no...
VirtualSelect.init({
ele: ...,
options: ...,
});
我在 webpack 配置中添加了一个别名:
...
resolve: {
alias: {
'virtual-select-plugin': 'virtual-select-plugin/dist/virtual-select.min',
},
extensions: [
'.js',
'.jsx',
'.ts',
'.tsx',
],
},
...
我现在搜索了 6 小时,但没有找到完成这项工作的解决方案。有人可以帮帮我吗?
【问题讨论】:
-
我想我找到了原因。缩小的 js 不导出任何东西。这只是普通的js。有人可以确认吗?
标签: typescript webpack