You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用npm+webpack集成timepicker.co报错'timepicker is not a function'

解决webpack + npm集成jquery-timepicker的问题

核心问题原因

jquery-timepicker作为jQuery插件,需要挂载到全局的$/jQuery对象上才能生效。如果webpack没有将jQuery暴露为全局变量,插件无法找到jQuery原型进行扩展,就会出现timepicker is not a function的错误。

解决方案步骤

1. 配置webpack让jQuery全局可用

修改你的webpack.config.js,添加ProvidePlugin来自动将jQuery注入到每个模块,并暴露为全局变量:

const webpack = require('webpack');

module.exports = {
  // 其他已有配置(entry、output等)
  plugins: [
    new webpack.ProvidePlugin({
      $: 'jquery',
      jQuery: 'jquery'
    })
  ]
};

2. 正确导入样式和插件

在你的主JS文件(比如index.js)中,按以下顺序导入:

// 导入jQuery(配置ProvidePlugin后可省略,但保留更稳妥)
import $ from 'jquery';
// 导入timepicker的样式文件
import 'jquery-timepicker/jquery.timepicker.css';
// 导入timepicker插件(无需赋值变量,插件会自动扩展jQuery)
import 'jquery-timepicker';

3. 初始化timepicker

确保在DOM加载完成后执行初始化:

$(document).ready(() => {
  $('input.timepicker').timepicker({
    // 这里添加你的配置选项,比如:
    // timeFormat: 'H:i',
    // interval: 30
  });
});

备选方案:使用expose-loader暴露jQuery

如果不想修改webpack配置,也可以用expose-loader直接在导入时将jQuery暴露到全局:

  1. 先安装loader:
npm install expose-loader --save-dev
  1. 修改主JS文件的导入:
import $ from 'expose-loader?$!jquery';
import jQuery from 'expose-loader?jQuery!jquery';

import 'jquery-timepicker/jquery.timepicker.css';
import 'jquery-timepicker';

// 初始化代码同上

内容的提问来源于stack exchange,提问作者Joshua Dance

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 06:40:25