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

Next.js执行npm run dev报错:找不到next/dist/compiled/ws模块

问题:WSL环境运行Next.js项目npm run dev报错MODULE_NOT_FOUND

错误详情

[Error: Cannot find module 'next/dist/compiled/ws'
Require stack:
/mnt/c/Users/Marcus Flavio/OneDrive - Microsoft 365/Área de Trabalho/Projects/smartiming-pwa/node_modules/next/dist/server/dev/hot-reloader-webpack.js
- /mnt/c/Users/Marcus Flavio/OneDrive - Microsoft 365/Área de Trabalho/Projects/smartiming-pwa/node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.js
- /mnt/c/Users/Marcus Flavio/OneDrive - Microsoft 365/Área de Trabalho/Projects/smartiming-pwa/node_modules/next/dist/server/lib/router-server.js
- /mnt/c/Users/Marcus Flavio/OneDrive - Microsoft 365/Área de Trabalho/Projects/smartiming-pwa/node_modules/next/dist/server/lib/start-server.js] {
code: 'MODULE_NOT_FOUND',
requireStack: [Array]
}

项目配置

next.config.js内容:

const withPWA = require("@ducanh2912/next-pwa").default({
    dest: "public",
    cacheOnFrontEndNav: true,
    aggressiveFrontEndNavCaching: true,
    reloadOnOnline: true,
    swcMinify: true,
    disable: process.env.NODE_ENV === "development",
    workboxOptions: {
        disableDevLogs: true,
    },
    swSrc: "public/serviceWorker.js",
});

/** @type {import('next').NextConfig} */
const nextConfig = {
    typescript: {
        tsconfigPath: "./tsconfig.json",
    },
    images: {
        remotePatterns: [
            {
                protocol: "https",
                hostname: "**.**.**",
            },
        ],
    },

    webpack(config) {
        config.resolve.alias = {
            ...config.resolve.alias,
            "@": require("path").resolve(__dirname),
        };
        return config;
    },
};

module.exports = withPWA(nextConfig);

版本信息

  • Node: v22.13.1
  • Next.js: v15.1.6

已尝试的无效方案

  • 在next.config.js中添加实验性配置:
    experimental: {
      outputFileTracingRoot: join(__dirname, '../../'),
    }
    
  • 清除缓存:
    rm -rf .next && npm cache clean --force
    
  • 删除node_modules和package-lock.json后重新安装依赖:
    npm install
    

解决办法

1. 迁移项目到WSL原生文件系统

项目放在Windows的OneDrive目录下,WSL访问NTFS文件系统易出现权限、符号链接失效等问题。直接把项目复制到WSL本地目录:

# 复制项目到WSL本地目录
cp -r /mnt/c/Users/Marcus\ Flavio/OneDrive\ -\ Microsoft\ 365/Área\ de\ Trabalho/Projects/smartiming-pwa ~/Projects/
# 进入新目录
cd ~/Projects/smartiming-pwa
# 删除旧依赖并重新安装
rm -rf node_modules package-lock.json
npm install
# 启动项目
npm run dev

2. 降级Node.js版本

Next.js 15与Node.js 22可能存在兼容性问题,切换到LTS版本Node.js 20:

# 用nvm安装并切换到Node.js 20(未安装nvm需先安装)
nvm install 20
nvm use 20
# 重新安装依赖并启动
rm -rf node_modules package-lock.json
npm install
npm run dev

3. 手动安装缺失的ws包

因文件系统问题可能导致Next.js内置的ws包丢失,手动补装:

npm install ws --save-dev

4. 临时禁用PWA插件排查冲突

先关闭@ducanh2912/next-pwa插件,确认是否是插件导致的问题:
修改next.config.js为直接导出配置:

/** @type {import('next').NextConfig} */
const nextConfig = {
    typescript: {
        tsconfigPath: "./tsconfig.json",
    },
    images: {
        remotePatterns: [
            {
                protocol: "https",
                hostname: "**.**.**",
            },
        ],
    },

    webpack(config) {
        config.resolve.alias = {
            ...config.resolve.alias,
            "@": require("path").resolve(__dirname),
        };
        return config;
    },
};

module.exports = nextConfig;

然后执行npm run dev,若能正常启动,再排查PWA插件版本是否适配Next.js 15。

内容的提问来源于stack exchange,提问作者Marcus-Flavio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:48:19