前提・実現したいこと
nuxt.jsでexpress連携して開発をしています。(nuxt.js/express/node.jsは利用はじめてです)
せっかくどちらもjsなのでバリデーションなどの共通ロジックを共通化したいです。
実現できたのですが無駄を感じられる状態のやり方になってしまい、正しい方法なのか自信がありません。
ESM形式のjsファイルを作ってそれをexpress用ディレクトリに配置し
それを読み込んでそのままCommonJSでmodule.exportsするだけのjsもセットで用意。
nuxt.js側は-r esmというパラメータ付きで起動したうえでesmのjsを読み込む。
express側はcjsのjsを読み込む。
とりあえずはこれで動いてるんですが・・・もっとまともな方法があるような気がしての質問になります。
これくらいしか方法はないのでしょうか?
よろしくお願いいたします。
該当のソースコード
関係ないであろう部分は省略しています
package.json -r esmつけて起動
json
1{ 2 "scripts": { 3 "debug": "cross-env NODE_ENV=development nodemon -r esm --delay 2.5 --nolazy --inspect-brk=9229 server/index.js --watch
app/pages/xxx.vue nuxt.js
javascript
1<script> 2const { createXXXX } = require('~/server/utils/esm/mylib') 3export default { 4 mounted() { 5 createXXXX() 6 }, 7} 8</script>
app/server/app.js express
javascript
1const { createXXXX } = require('./utils/cjs/mylib') 2createXXXX()
app/server/utils/esm/mylib.js
javascript
1export function createXXXX() { 2 console.log('mylib') 3}
app/server/utils/cjs/mylib.js
javascript
1const esm = require('../esm/mylib') 2module.exports = esm
補足情報(FW/ツールのバージョンなど)
Nuxt.js ^2.0.0
express ^4.16.4
あなたの回答
tips
プレビュー