createLocalStorage из localstorage-ponyfill не работает в ssr с umi-сервером - PullRequest
0 голосов
/ 04 мая 2020

Я использую инфраструктуру umi js для своего SPA и использую "localalstorage-ponyfill" для обработки localStorage через браузер и среду узлов. Когда я перехожу к SSR (рендеринг на стороне сервера), следуя указаниям здесь , я получаю ошибку:

internal/validators.js:125
throw new ERR_INVALID_ARG_TYPE(name, 'string', value);
^

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type undefined
    at validateString (internal/validators.js:125:11)
    at Object.dirname (path.js:1260:5)
    at resolve (/xxxx/dist/umi.server.js:43279:22)
    at module.exports../node_modules/_app-root-path@2.2.1@app-root-path/lib/app-root-path.js.module.exports (/xxxx/dist/umi.server.js:43162:20)
    at Object.<anonymous> (/xxxx/dist/umi.server.js:43125:18)
    at Object../node_modules/_app-root-path@2.2.1@app-root-path/index.js (/xxxx/dist/umi.server.js:43126:30)
    at __webpack_require__ (/xxxx/dist/umi.server.js:687:30)
    at fn (/xxxx/dist/umi.server.js:61:20)
    at createLocalStorage (/xxxx/dist/umi.server.js:142986:23)
    at Object../src/components/common.js (/xxxx/dist/umi.server.js:321241:67)

, где общее. js использует localstorage-ponyfill, как показано ниже:

import { createLocalStorage } from "localstorage-ponyfill"
export const localStorage = createLocalStorage()

код около /xxxx/dist/umi.server.js:43279:22 равен

if (alternateMethod || null == appRootPath) {
            appRootPath = path.dirname(__webpack_require__.c[__webpack_require__.s].filename);
    }

webpack.config.js :

module.exports = {
  resolve: {
    alias: {
      '@': require('path').resolve(__dirname, 'src'),
    },
  },
  module: {
    loaders: [
      {
        test: /\.jsx?$/,
        exclude: /node_modules/,
        loader: 'babel',
        query: {
          presets: ['es2015', 'stage-0', 'react']
        }
      },
      {
        test: /\.module\.css$/,
        loader: "style-loader!css-loader?modules"
      },
    ]
  }
};

Что-то не так в этом случае?

Я воспроизвел эту ошибку на основе официального примера umi js и допустил ошибку здесь

...