1

私は Nuxt 2.15.4 を使用しており、パッケージstoreごとに nuxt ディレクトリにファイルが存在するかどうかをコードで確認したいと考えていfs-extraます。

このコードでファイルパスを取得できるため、モジュールでは簡単です:

const path = require('path')
const fse = require('fs-extra');
const FilePath = path.join(this.options.rootDir, './static/myfile.json')
const fse = require('fs-extra');
fse.pathExists(FilePath, (err, exists) => {
    console.log(err) // => null
    console.log(exists) // => true
})

しかし、vuex store私はアクセスできずthis.options.rootDir、このコードは常にfalseを返します:

export const actions = {
  async nuxtServerInit({dispatch, commit}) {
    if(process.server){
      const fse = require('fs-extra');
      fse.pathExists('~/static/myfile.json', (err, exists) => {
        console.log(err) // => null
        console.log(exists) // => false
      })
    }
  }
}

ファイルのフルパスを取得したり、存在するかどうかを確認するにはどうすればよいですか??

#アップデート

ファイルパスを少し間違えたようですので使用./static/myfile.jsonしてチェック完了です!!

しかし、別の問題が発生しました!! 別のjsonファイルがありますが、使用しようとすると機能しObject.assign(mainfile, myfile)ません!!

ここにサンプルがあります:

  async nuxtServerInit({dispatch, commit}) {
    let mainfile = require('../assets/mainfile.json')
    // if i use assign here it works and merge them together
    // let myfile = require('../assets/myfile.json')
    // Object.assign(mainfile, myfile)
    if(process.server){
      const fse = require('fs-extra');
      fse.pathExists('./static/myfile.json', (err, exists) => {
        if(exists){
          Object.assign(mainfile, myfile)
          commit('SET_FILE', mainfile); // this send the unmerged file to mutation
          console.log(mainfile); // but get the merged json here
        }
      })
      console.log(mainfile); // it is unmerged
    }
    console.log(mainfile); // it is unmerged
  }

4

2 に答える 2

1

更新された質問については、それexistsが真実であること、ループに入っていること、そしてそれmainfileが期待している形式であることを確認してください。
次に、あなたができる

mainfile = {...mainfile, ...myfile} // rather than Object.assign
于 2021-05-04T08:22:06.220 に答える