Я использую инфраструктуру 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 и допустил ошибку здесь