iamkun / dayjs

⏰ Day.js 2kB immutable date-time library alternative to Moment.js with the same modern API

Home Page:https://day.js.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Wechat mini program when using plugins report errors

ioslide opened this issue · comments

Wechat mini program when using plugins cause "TypeError: t is not a function"

Information

  • Day.js v1.10.2
  • OS: wechat mini program
    QQ截图20210110220926

TypeError: t is not a function

maybe you cloud try

const plugin = require('dayjs/plugin/xx').default

Miniprogram npm support does not compile plugins correctly. It only seems to compile the dayjs entry file (index.js) and immediate dependencies. You can add gulp or something similar to manually copy the plugin files from node_modules/dayjs/plugin to miniprogram_npm/dayjs/plugin

  1. Delete built miniprogram_ npm/dayjs folder
  2. modify node_modules\dayjs\package.json
    {
       ......
       "miniprogram": "esm",                // copy esm to miniprogram_npm
       ......
     }
    
  3. building npm
  4. The test code is as follows
    var dayjs = require("dayjs").default;
    var customParseFormat = require("dayjs/plugin/customParseFormat").default
    var advancedFormat = require('dayjs/plugin/advancedFormat').default
    dayjs.extend(advancedFormat);
    dayjs.extend(customParseFormat);
    console.log(dayjs().format('Q Do k kk X x'))
    
  5. 删除miniprogram_ npm/dayjs文件夹
  6. 修改 node_modules\dayjs\package.json文件内容
    {
       ......
       "miniprogram": "esm",                // copy esm to miniprogram_npm
       ......
     }
    
  7. 重新构建npm
  8. 测试代码
    var dayjs = require("dayjs").default;
    var customParseFormat = require("dayjs/plugin/customParseFormat").default
    var advancedFormat = require('dayjs/plugin/advancedFormat').default
    dayjs.extend(advancedFormat);
    dayjs.extend(customParseFormat);
    console.log(dayjs().format('Q Do k kk X x'))
    

希望有帮助,不确定真的解决了问题........

  1. Delete built miniprogram_ npm/dayjs folder
  2. modify node_modules\dayjs\package.json
    {
       ......
       "miniprogram": "esm",                // copy esm to miniprogram_npm
       ......
     }
    
  3. building npm
  4. The test code is as follows
    var dayjs = require("dayjs").default;
    var customParseFormat = require("dayjs/plugin/customParseFormat").default
    var advancedFormat = require('dayjs/plugin/advancedFormat').default
    dayjs.extend(advancedFormat);
    dayjs.extend(customParseFormat);
    console.log(dayjs().format('Q Do k kk X x'))
    
  5. 删除miniprogram_ npm/dayjs文件夹
  6. 修改 node_modules\dayjs\package.json文件内容
    {
       ......
       "miniprogram": "esm",                // copy esm to miniprogram_npm
       ......
     }
    
  7. 重新构建npm
  8. 测试代码
    var dayjs = require("dayjs").default;
    var customParseFormat = require("dayjs/plugin/customParseFormat").default
    var advancedFormat = require('dayjs/plugin/advancedFormat').default
    dayjs.extend(advancedFormat);
    dayjs.extend(customParseFormat);
    console.log(dayjs().format('Q Do k kk X x'))
    

希望有帮助,不确定真的解决了问题........

提个pr吧兄弟

Just wondering if this PR is a proper fix #1835 (comment)

commented
  1. Delete built miniprogram_ npm/dayjs folder
  2. modify node_modules\dayjs\package.json
    {
       ......
       "miniprogram": "esm",                // copy esm to miniprogram_npm
       ......
     }
    
  3. building npm
  4. The test code is as follows
    var dayjs = require("dayjs").default;
    var customParseFormat = require("dayjs/plugin/customParseFormat").default
    var advancedFormat = require('dayjs/plugin/advancedFormat').default
    dayjs.extend(advancedFormat);
    dayjs.extend(customParseFormat);
    console.log(dayjs().format('Q Do k kk X x'))
    
  5. 删除miniprogram_ npm/dayjs文件夹
  6. 修改 node_modules\dayjs\package.json文件内容
    {
       ......
       "miniprogram": "esm",                // copy esm to miniprogram_npm
       ......
     }
    
  7. 重新构建npm
  8. 测试代码
    var dayjs = require("dayjs").default;
    var customParseFormat = require("dayjs/plugin/customParseFormat").default
    var advancedFormat = require('dayjs/plugin/advancedFormat').default
    dayjs.extend(advancedFormat);
    dayjs.extend(customParseFormat);
    console.log(dayjs().format('Q Do k kk X x'))
    

希望有帮助,不确定真的解决了问题........

亲测有效。感谢分享