Dva: ์‹œ์ž‘ ํ›„ ํŽ˜์ด์ง€๋ฅผ ์—ด๊ณ  ์˜ค๋ฅ˜๋ฅผ ๋ณด๊ณ ํ•˜์‹ญ์‹œ์˜ค. ๊ฒฝ๊ณ : `require("history/createHashHistory")` ๋Œ€์‹  `require("history").createHashHistory`๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

์— ๋งŒ๋“  2019๋…„ 03์›” 17์ผ  ยท  16์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dvajs/dva

๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ์ฝ”๋“œ: (์žฌ์ƒ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ๋˜๋Š” ๋‹จ๊ณ„๋ฅผ ์ œ๊ณตํ•˜์„ธ์š”.)

1.dva ์ƒˆ ์•ฑ
2. ๋‹ค์Œ ๋‚ด์šฉ์œผ๋กœ ์ƒˆ webpack.config.js๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ ๊ธฐ๋Šฅ ๋‚ด๋ณด๋‚ด๊ธฐ(webpackConfig) {
webpackConfig.resolve.alias['@babel/runtime'] ์‚ญ์ œ;
webpackConfig๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
}
2.npm ์‹œ์ž‘

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘: (์˜ˆ์ƒ๋˜๋Š” ์ •์ƒ์ ์ธ ํšจ๊ณผ)

๋ธŒ๋ผ์šฐ์ €๋Š” ํŽ˜์ด์ง€๋ฅผ ์ •์ƒ์ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ํ–‰๋™: (์‹ค์ œ ํšจ๊ณผ)

๋ธŒ๋ผ์šฐ์ € ์ฝ˜์†” ์ถœ๋ ฅ ๊ฒฝ๊ณ  : ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค require("history").createHashHistory ๋Œ€์‹  require("history/createHashHistory") . ํ›„์ž์— ๋Œ€ํ•œ ์ง€์›์€ ๋‹ค์Œ ์ฃผ์š” ๋ฆด๋ฆฌ์Šค์—์„œ ์ œ๊ฑฐ ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค

์‚ฌ์šฉ๋œ ํŒจํ‚ค์ง€ ๋ฒ„์ „: (๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „)

dva-cli ๋ฒ„์ „ 0.10.0

Need Reproduce

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

dva๊ฐ€ ๊ด€๋ฆฌ๋˜์ง€ ์•Š๋Š” ๋Š๋‚Œ์ด ๋“œ๋‚˜์š”?์ด ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ๋„ˆ๋ฌด ์˜ค๋žซ๋™์•ˆ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์™œ ๋‹ซํ˜”์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  16 ๋Œ“๊ธ€

WechatIMG24

์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ๋‹จ๊ณ„๋ฅผ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค.

1.dva ์ƒˆ ์•ฑ
2. ๋‹ค์Œ ๋‚ด์šฉ์œผ๋กœ ์ƒˆ webpack.config.js๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ ๊ธฐ๋Šฅ ๋‚ด๋ณด๋‚ด๊ธฐ(webpackConfig) {
webpackConfig.resolve.alias['@babel/runtime'] ์‚ญ์ œ;
webpackConfig๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
}
2.npm ์‹œ์ž‘
3. ๋ธŒ๋ผ์šฐ์ € ๋ณด๊ธฐ ์ฝ˜์†”

ํ•˜๋Š” index.js : 2177 ๊ฒฝ๊ณ  : ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค require("history").createHashHistory ๋Œ€์‹  require("history/createHashHistory") ํ›„์ž์— ๋Œ€ํ•œ ์ง€์›์€ ๋‹ค์Œ ์ฃผ์š” ๋ฆด๋ฆฌ์Šค์—์„œ ์ œ๊ฑฐ ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค..

๊ฒฝ๊ณ  ์ •๋ณด๋Š” ๋ฌด์‹œ๋˜๋ฉฐ ์‚ฌ์šฉ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์œผ๋ฉฐ ๋‹ค์Œ ๋ฒ„์ „์—์„œ ํ•ด๊ฒฐ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

1.dva ์ƒˆ ์•ฑ
2. ๋‹ค์Œ ๋‚ด์šฉ์œผ๋กœ ์ƒˆ webpack.config.js๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ ๊ธฐ๋Šฅ ๋‚ด๋ณด๋‚ด๊ธฐ(webpackConfig) {
webpackConfig.resolve.alias['@babel/runtime'] ์‚ญ์ œ;
webpackConfig๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
}
2.npm ์‹œ์ž‘
3. ๋ธŒ๋ผ์šฐ์ € ๋ณด๊ธฐ ์ฝ˜์†”

ํ•˜๋Š” index.js : 2177 ๊ฒฝ๊ณ  : ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค require("history").createHashHistory ๋Œ€์‹  require("history/createHashHistory") ํ›„์ž์— ๋Œ€ํ•œ ์ง€์›์€ ๋‹ค์Œ ์ฃผ์š” ๋ฆด๋ฆฌ์Šค์—์„œ ์ œ๊ฑฐ ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค..

1.dva ์ƒˆ ์•ฑ
2. ๋‹ค์Œ ๋‚ด์šฉ์œผ๋กœ ์ƒˆ webpack.config.js๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ ๊ธฐ๋Šฅ ๋‚ด๋ณด๋‚ด๊ธฐ(webpackConfig) {
webpackConfig.resolve.alias['@babel/runtime'] ์‚ญ์ œ;
webpackConfig๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
}
2.npm ์‹œ์ž‘
3. ๋ธŒ๋ผ์šฐ์ € ๋ณด๊ธฐ ์ฝ˜์†”

ํ•˜๋Š” index.js : 2177 ๊ฒฝ๊ณ  : ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค require("history").createHashHistory ๋Œ€์‹  require("history/createHashHistory") ํ›„์ž์— ๋Œ€ํ•œ ์ง€์›์€ ๋‹ค์Œ ์ฃผ์š” ๋ฆด๋ฆฌ์Šค์—์„œ ์ œ๊ฑฐ ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค..

image
์ด ๋ฌธ์ œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๊นŒ?๋„์›€์„ ์š”์ฒญ

@mystylemylife ๋Š” ์žฌํ˜„ ๋‹จ๊ณ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. .

@mystylemylife ๋Š” ์žฌํ˜„ ๋‹จ๊ณ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. .

@mystylemylife ๋Š” ์žฌํ˜„ ๋‹จ๊ณ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. .
[email protected] ์„ ์‹œ์ž‘ํ•  ๋•Œ @bestXie ์˜ ๋ฐฉ๋ฒ•

๊ธฐ์กด ํ”„๋กœ์ ํŠธ์—์„œ nodemodule์„ ๋‹ค์‹œ ์„ค์น˜ํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ๋ณด๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค. [email protected]์˜ ๋ฌธ์ œ๋ฅผ ๋ณด์‹ญ์‹œ์˜ค. <br i="5"/> ์›๋ณธ ํฌ์Šคํ„ฐ์™€ ๊ฐ™์ด

๊ธฐ์กด ํ”„๋กœ์ ํŠธ์—์„œ nodemodule์„ ์žฌ์„ค์น˜ํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ๋ณด๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์›๋ณธ ํฌ์Šคํ„ฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ [email protected]<br i="6"/> Update

๋กœ๋“œํ˜ธ๊ทธ ๋ฒ„์ „์„ 2.5.0-beta.4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

import { createBrowserHistory } from 'history' ๆˆ–import { createHashHistory } from 'history'

์ด์ œ ๋ช‡ ๊ฐœ์›”์ด ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ •๋ง ๋„๋‘‘์„ ์ž…๋‹ˆ๋‹ค.

์ด์ „ ํ”„๋กœ์ ํŠธ์—์„œ nodemodule์„ ๋‹ค์‹œ ์„ค์น˜ํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ๋ณด๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค. [email protected]<br i="7"/> Update

๋กœ๋“œํ˜ธ๊ทธ ๋ฒ„์ „์„ 2.5.0-beta.4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ๋กœ๋“œํ˜ธ๊ทธ ๋ฒ„์ „์„ 2.5.0-beta.4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋•Œ๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐํ•˜๋‹ค:

  1. ํ”„๋กœ์ ํŠธ์˜ dva ํด๋”์— ์žˆ๋Š” node_modules ์—์„œ 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.js require\\("history/createHashHistory"\\) ๋ฅผ require("history").createHashHistory ๋ฐ”๊พธ์‹ญ์‹œ์˜ค.

  1. ์›์‚ฌ ์ถ”๊ฐ€ -D ๊ต์ฒด;
  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"
  },
  ...
}
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰