私は 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
}