node.js - React + react-router `require.ensure 按需加载 服务端渲染出错`
迷茫
迷茫 2017-04-17 14:56:06
[Node.js讨论组]

我尝试使用require.ensure这个去做实现了按需加载的效果,但是因为我这边有做服务端渲染,所以现在是前端和服务端公用了一个路由控制器:

const routes = {
    component: Shell(Init),
    childRoutes: [
        {
            path: 'login',
            getComponent: (nextState, cb) => {
                require.ensure([], (require) => {
                    cb(null, require('../containers/login'))
                })
            }
        }
    ]
};

但是在服务端执行却报错了:

TypeError: require.ensure is not a function
    at Object.getComponent (D:/luoo/nodejs/app/routes/routes.jsx:49:25)
    at getComponentsForRoute (D:\luoo\nodejs\node_modules\react-router\lib\getComponents.js:29:16)
    at D:\luoo\nodejs\node_modules\react-router\lib\getComponents.js:41:5
    at D:\luoo\nodejs\node_modules\react-router\lib\AsyncUtils.js:84:5
    at Array.forEach (native)
    at mapAsync (D:\luoo\nodejs\node_modules\react-router\lib\AsyncUtils.js:83:9)
    at getComponents (D:\luoo\nodejs\node_modules\react-router\lib\getComponents.js:40:28)
    at finishEnterHooks (D:\luoo\nodejs\node_modules\react-router\lib\createTransitionManager.js:112:35)
    at runTransitionHooks (D:\luoo\nodejs\node_modules\react-router\lib\TransitionUtils.js:50:5)
    at runEnterHooks (D:\luoo\nodejs\node_modules\react-router\lib\TransitionUtils.js:93:10)

这个有哪个方案可以解决呢?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(1)
黄舟

webpack target 为 node 的情况下,require 为原生 node.js 的 require,没有 require.ensure 方法.

你可以针对服务器环境写一个 shim

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号