我有一个使用 rollup + buble 的 preact 应用程序。我需要使用另一个使用 React的组件文本掩码。我正在尝试在我的汇总构建文件中创建别名。对于客户端,它可以完美运行,但是在服务器端构建时,它会失败。我的汇总构建配置中的插件部分如下:-
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
]
我遇到了一个问题,它说在服务器端应用程序上使用 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)