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

Next.js项目控制台日志来源异常及webpack加载报错求助

问题:Next.js Pages Router项目中console.log来源显示异常

开发Next.js Pages Router项目时,浏览器控制台所有console.log均显示来自名为index.js的文件,但查看该文件后,发现日志实际来自一段包含original.apply(this, args);的未知文件,且从未修改或见过该文件。

相关代码片段

日志指向的代码段

function replace(_logger, level) {
        if (!_logger[level]) {
            return () => {
            };
        }
        return patch(_logger, level, (original) => {
            return (...args) => {
                original.apply(this, args);
                if (inStack) {
                    return;
                }
                inStack

该文件的开头代码

import { patch } from '../../../utils.js';
import { ErrorStackParser } from './error-stack-parser.js';
import { stringify } from './stringify.js';

const defaultLogOptions = {
    level: [
        'assert',
        'clear',
        'count',
        'countReset',
        'debug',
        'dir',
        'dirxml',
        'error',
        'group',
        'groupCollapsed',
        'groupEnd',
        'info',
        'log',
        'table',
        'time',
        'timeEnd',
        'timeLog',
        'trace',
        'warn',
    ],
    lengthThreshold: 1000,
    logger: 'console',
};
function initLogObserver(cb, win, options) {

项目依赖

"dependencies": {
        "@apollo/client": "^3.7.14",
        "@notionhq/client": "^2.2.3",
        "@testing-library/user-event": "^14.4.3",
        "@types/node": "18.14.2",
        "@types/react": "18.0.28",
        "@types/react-dom": "18.0.11",
        "cookie": "^0.5.0",
        "eslint-config-next": "13.2.1",
        "graphql": "^16.6.0",
        "knex": "^2.4.2",
        "next": "13.2.1",
        "next-auth": "^4.22.1",
        "next-connect": "^1.0.0",
        "next-router-mock": "^0.9.3",
        "next-test-api-route-handler": "^3.1.8",
        "objection": "^3.0.1",
        "react": "^18.2.0",
        "react-cookie": "^4.1.1",
        "react-dom": "18.2.0",
        "react-dropdown": "^1.11.0",
        "react-pdf": "^7.0.3",
        "react-select": "^5.7.3",
        "react-text-transition": "^3.0.2",
        "reactjs-popup": "^2.0.5",
        "remark-html": "^15.0.2",
        "sharp": "^0.32.3",
        "sqlite3": "^5.1.6",
        "typescript": "4.9.5"
    },
    "devDependencies": {
        "source-map-loader": "^1.0.0",
        "@testing-library/jest-dom": "^5.16.5",
        "@testing-library/react": "^14.0.0",
        "autoprefixer": "^10.4.14",
        "eslint": "^8.41.0",
        "eslint-config-standard": "^17.1.0",
        "eslint-plugin-import": "^2.27.5",
        "eslint-plugin-jest": "^27.2.1",
        "eslint-plugin-n": "^16.0.0",
        "eslint-plugin-promise": "^6.1.1",
        "eslint-plugin-react": "^7.32.2",
        "jest": "^29.5.0",
        "jest-environment-jsdom": "^29.5.0",
        "jest-fetch-mock": "^3.0.3",
        "next-connect": "^1.0.0",
        "postcss": "^8.4.21",
        "tailwindcss": "^3.2.7"
    }

已尝试的方案

尝试通过webpack devtools设置eval-cheap-source-map修复source map问题,但日志仍显示来自同一文件的第103行。

额外错误信息

Chrome开发者工具中查看源码时,名为console.log的文件提示:

Could not load content for webpack://react-devtools-extensions/react-devtools-shared/src/backend/console.js (Fetch through target failed: Unsupported URL scheme; Fallback: HTTP error: status code 404, net::ERR_UNKNOWN_URL_SCHEME)

解决方案与调试思路

  • 定位console劫持来源:从代码中的initLogObserver和patch函数判断,这是某个依赖对console进行了劫持。用npm ls react-devtools-extensions检查是否存在间接依赖,重点排查@apollo/client、测试工具或监控类依赖。
  • 临时移除可疑依赖:找到疑似劫持console的依赖后,临时移除并重启项目,验证日志来源是否恢复正常。
  • 调整Next.js devtools配置:在next.config.js中设置完整的source-map替代eval类配置:
    module.exports = {
      webpack: (config, { dev }) => {
        if (dev) {
          config.devtool = 'source-map';
        }
        return config;
      },
    };
    
  • 关闭React DevTools扩展:错误提示指向react-devtools-extensions,关闭浏览器的React DevTools扩展后重启项目,排查扩展是否干扰console栈信息。
  • 使用console.trace()替代log:临时用console.trace()输出,它会打印完整调用栈,绕过被劫持的log方法,找到真正的日志发起位置。
  • 清理缓存:删除.next文件夹和node_modules/.cache,执行npm install后重启项目,排除缓存导致的source map异常。
  • 升级/降级Next.js版本:当前使用的Next.js 13.2.1属于早期版本,可能存在pages router的source map兼容问题,尝试升级到13.x稳定版(如13.4.x)或降级到13.1.x。

内容的提问来源于stack exchange,提问作者Alexis B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:10:16