Dva: 启动之后打开页面报错 Warning: Please use `require("history").createHashHistory` instead of `require("history/createHashHistory")`.

Created on 17 Mar 2019  ·  16Comments  ·  Source: dvajs/dva

Code to reproduce the issue: (请提供可复现的代码或者步骤)

1.dva new app
2.新建 webpack.config.js,内容如下:
export default function(webpackConfig) {
delete webpackConfig.resolve.alias['@babel/runtime'];
return webpackConfig;
}
2.npm start

Expected behavior: (预期的正常效果)

浏览器正常显示页面

Actual behavior: (实际效果)

浏览器控制台输出 Warning: Please use require("history").createHashHistory instead of require("history/createHashHistory"). Support for the latter will be removed in the next major release

Versions of packages used: (哪个库的哪个版本出现的问题)

dva-cli version 0.10.0

Need Reproduce

Most helpful comment

dva感觉已经不维护了吗?这个问题这么久还存在,为什么关闭了

All 16 comments

WechatIMG24

请给出可复现步骤。

1.dva new app
2.新建 webpack.config.js,内容如下:
export default function(webpackConfig) {
delete webpackConfig.resolve.alias['@babel/runtime'];
return webpackConfig;
}
2.npm start
3.浏览器查看控制台

index.js:2177 Warning: Please use require("history").createHashHistory instead of require("history/createHashHistory"). Support for the latter will be removed in the next major release.

warning 信息忽略,不影响使用,下个版本会解决。

1.dva new app
2.新建 webpack.config.js,内容如下:
export default function(webpackConfig) {
delete webpackConfig.resolve.alias['@babel/runtime'];
return webpackConfig;
}
2.npm start
3.浏览器查看控制台

index.js:2177 Warning: Please use require("history").createHashHistory instead of require("history/createHashHistory"). Support for the latter will be removed in the next major release.

1.dva new app
2.新建 webpack.config.js,内容如下:
export default function(webpackConfig) {
delete webpackConfig.resolve.alias['@babel/runtime'];
return webpackConfig;
}
2.npm start
3.浏览器查看控制台

index.js:2177 Warning: Please use require("history").createHashHistory instead of require("history/createHashHistory"). Support for the latter will be removed in the next major release.

image
这个问题怎么解决的?求助

@mystylemylife 给复现步骤。。

@mystylemylife 给复现步骤。。

@mystylemylife 给复现步骤。。
解决了,之前因为启动[email protected]报错所以按照@bestXie 的方法增加webpack.config.js移除'@babel/runtime',不报错了,但又报的是我之前截图的错误,现在去掉这个js,并升级roadhog版本为2.5.0-beta.4就好了

老项目重新安装nodemodule 就报错一看是[email protected]的问题
更新dva吧就跟楼主一样
什么鬼现在

老项目重新安装nodemodule 就报错一看是[email protected]的问题
更新dva吧就跟楼主一样
什么鬼现在

升级roadhog版本为2.5.0-beta.4就好了

import { createBrowserHistory } from 'history' 或import { createHashHistory } from 'history'

这都几个月了,真是上了贼船了。

老项目重新安装nodemodule 就报错一看是[email protected]的问题
更新dva吧就跟楼主一样
什么鬼现在

升级roadhog版本为2.5.0-beta.4就好了

升级roadhog版本为2.5.0-beta.4也是会出现这个问题的

解决:

  1. 在项目中node_modules中的dva文件夹,修改lib/index.js
  2. 找到这行代码如下
var _createHashHistory = _interopRequireDefault(require("history/createHashHistory"));
  1. 修改`require中的路径,如下:
var _createHashHistory = _interopRequireDefault(require("history").createHashHistory);

保存关闭编译器,重新启动服务 就好了

dva感觉已经不维护了吗?这个问题这么久还存在,为什么关闭了

通过代理原生的console.warn和console.error解决

      (() => {
        //过滤掉一些无用的警告、没有价值的报错
        //代理console.warn方法
        const _consoleWarn = console.warn;
        console.warn = (...rest) => {
          if (
            ![
              'react-error-overlay is not meant for use in production. You should ensure it is not included in your build to reduce bundle size.',
              'Warning: componentWillReceiveProps has been renamed',
              'Warning: componentWillUpdate has been renamed',
            ].some((item) => rest[0].indexOf(item) !== -1)
          ) {
            _consoleWarn(...rest);
          }
        };
        //代理console.error
        const _consoleError = console.error;
        console.error = (...rest) => {
          if (
            ![
              `Warning: Please use \`require("history").createHashHistory\` instead of \`require("history/createHashHistory")\`. Support for the latter will be removed in the next major release.`,
              'ui socket init',
            ].includes(rest[0].toString())
          ) {
            _consoleError(...rest);
          }
        };
      })();

自己写了一个补丁,每次启动前,替换./node_modules/dva/lib/index.jsrequire\\("history/createHashHistory"\\)替换为require("history").createHashHistory

  1. yarn add -D replace;
  2. 在根目录下增加patch.js文件,内容如下:
const replace = require("replace");

replace({
  regex: 'require\\("history/createHashHistory"\\)',
  replacement: 'require("history").createHashHistory',
  paths: ['./node_modules/dva/lib/index.js'],
  recursive: true,
  silent: true,
});
  1. package.json中增加如下代码,在start命令前增加npm run patch &&,增加"patch": "node ./patch.js" npm命令:
{
  ...
  "scripts": {
    "start": "npm run patch && cross-env APP_TYPE=site umi dev", // start命令之前先运行patch.js
    ...
    "patch": "node ./patch.js"
  },
  ...
}
Was this page helpful?
0 / 5 - 0 ratings