ロールアップ + ブーブルを使用しているプリアクト アプリがあります。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 を使用しているときに問題があるという問題に遭遇し、代わりに module-alias を使用することを提案していました。だから私は自分のノードサーバーファイルに以下のモジュールエイリアスを与えてみました:-
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)