如何在汇总+布尔设置中使用preact-compat和服务器端渲染?

时间:2017-07-06 23:57:56

标签: javascript reactjs rollup rollupjs preact

我有一个使用汇总+布雷的预制应用程序。我需要使用另一个使用React的组件text-mask。我试图在我的汇总构建文件中创建别名。对于客户端,它可以完美地工作,但是当在服务器端构建时,它会失败。我的汇总构建配置中的插件部分如下: -

plugins: [
    alias({
      'react': path.resolve('./node_modules/preact-compat/dist/preact-compat.es.js'),
      'react-dom': path.resolve('./node_modules/preact-compat/dist/preact-compat.es.js')
    }),
    nodeResolve({ jsnext: true, browser: true }),
    commonjs({ include: ['node_modules/**'], namedExports: { 'preact-redux': ['connect', 'Provider'] } }),
    replace({ '__CLIENT__': true, 'process.env.NODE_ENV': JSON.stringify('production') }),
    images,
    buble({ jsx: 'h', objectAssign: 'Object.assign' }),
    !isDev && uglify(uglifyConfig) // uglify slows builds
  ]

我遇到了一个issue,它说在服务器端应用程序上使用preact-compat时存在问题,并建议使用模块别名作为替代方案。所以我尝试在我的节点服务器文件中给出以下模块别名: -

require('module-alias').addAliases({
  'react': 'preact-compat',
  'react-dom': 'preact-compat'
})

即便这样做,我仍然会收到以下错误: -

Error: Cannot find module 'react'
    at Function.Module._resolveFilename (module.js:470:15)
    at Function.Module._load (module.js:418:25)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at r (/my-app/node_modules/react-text-mask/dist/reactTextMask.js:1:145)
    at Object.<anonymous> (/my-app/node_modules/react-text-mask/dist/reactTextMask.js: 1:315)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)

0 个答案:

没有答案