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

运行应用报错TypeError: urljoin is not a function如何解决

报错核心原因

TypeError: urljoin is not a function 触发的核心逻辑是当前导入的urljoin变量不是可执行的函数类型,结合给出的CommonJS导入写法,绝大多数场景是以下三类问题:

  • 安装的url-join版本为5.0.0及以上:该包从v5版本开始完全转为ESM-only模块,不再支持CommonJS规范的require直接导入,用require引入时拿到的是模块命名空间对象,而非默认导出的URL拼接函数。
  • 本地依赖安装损坏:node_modules中的url-join包文件缺失、版本不匹配,导致导入内容异常。
  • 模块环境混用:ESM项目中错误使用CommonJS导入语法,或者打包工具的模块解析配置错误,导致默认导出未被正确识别。
排查修复步骤
  • 先确认依赖版本
    执行命令查看当前安装的url-join版本:
    npm ls url-join
    # yarn用户执行 yarn list url-join
    # pnpm用户执行 pnpm ls url-join
    
    • 如果输出版本号 >=5.0.0,优先选以下两种方案修复:
      • 方案一(兼容原有CommonJS写法,改动最小):降级到支持CommonJS的最后稳定版本,执行:
        npm install url-join@4.0.1
        # 对应包管理器替换成yarn add/pnpm add即可
        
        安装完成后重启项目,原有const urljoin = require('url-join')的写法无需改动即可正常运行。
      • 方案二(保留高版本):适配ESM模块规范
        如果你是CommonJS环境,改用动态导入取默认导出:
        const loadUrlJoin = async () => {
          const { default: urljoin } = await import('url-join')
          // 所有用到urljoin的逻辑需要在异步导入完成后执行
          const fullUrl = urljoin('https://example.com', 'api', 'list')
        }
        loadUrlJoin()
        
        如果你是ESM项目(package.json中配置了"type": "module"),直接替换导入语法:
        import urljoin from 'url-join'
        
  • 如果版本是4.x及以下仍报错,执行依赖重装:
    • 删掉项目根目录下的node_modules文件夹、对应包管理器的锁文件(package-lock.json/yarn.lock/pnpm-lock.yaml)
    • 重新执行安装命令npm install/yarn install/pnpm install
    • 重启开发服务/应用进程再验证
  • 临时兼容校验
    如果上述步骤做完仍报错,可以在导入后加一行日志打印urljoin的实际内容:
    const urljoin = require('url-join')
    console.log('urljoin导入内容:', urljoin)
    
    如果打印的是一个带default属性的对象,直接改导入语句为const urljoin = require('url-join').default即可正常调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:48:33