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

Next.js 13.4+TypeScript导入PhotoSwipeLightbox报错求助

解决Next.js中导入PhotoSwipeLightbox的类型与模块找不到问题

第一步:清理冲突的类型依赖

PhotoSwipe v5及以上版本自带官方TypeScript类型声明,你单独安装的@types/photoswipe反而会和内置类型冲突,先卸载它:

npm uninstall @types/photoswipe

第二步:确保安装正确版本的PhotoSwipe

如果你的PhotoSwipe版本过低,可能没有内置类型或正确的导出路径,重新安装最新稳定版:

npm install photoswipe@latest

第三步:修正导入路径与TS配置

正确的导入方式

直接使用官方推荐的路径,不要手动去dist目录找类型文件:

import PhotoSwipeLightbox from 'photoswipe/lightbox';
import 'photoswipe/style.css'; // 务必导入样式文件

调整tsconfig.json配置

确保你的tsconfig.json(或tsconfig.app.json)核心配置项正确:

{
  "compilerOptions": {
    "moduleResolution": "Node16", // 若package.json含"type": "module"则用NodeNext,否则用Node16
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true
  }
}

第四步:Next.js App Router额外处理

如果你用的是Next.js App Router(app目录),必须给组件加上'use client'指令——PhotoSwipe是客户端侧运行的库,无法在服务端组件中初始化:

'use client';

import PhotoSwipeLightbox from 'photoswipe/lightbox';
import 'photoswipe/style.css';

export default function Gallery() {
  // 初始化示例
  const lightbox = new PhotoSwipeLightbox({
    gallery: '#my-gallery',
    children: 'a',
    pswpModule: () => import('photoswipe')
  });

  lightbox.init();

  return (
    <div id="my-gallery">
      <a href="large-image.jpg" data-pswp-width="1200" data-pswp-height="800">
        <img src="thumbnail.jpg" alt="示例图片" />
      </a>
    </div>
  );
}

最后排查步骤

如果仍报错,删除node_modules、package-lock.json(或yarn.lock)后重新执行npm install,强制刷新依赖缓存。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:43:15