我最近將我的 Quasar 框架升級到 v2,它使用 Vue3、Electron 16 和 Webpack 5。
當我嘗試運行我的應用程式時,我不斷收到此錯誤:
Module not found: Can't resolve imported dependency "fs"
我知道 webpack 5 不會自動執行 polyfill,所以我在 quasar.conf.js 中添加了這些:
chainWebpack (chain) {
const nodePolyfillWebpackPlugin = require('node-polyfill-webpack-plugin')
chain.plugin('node-polyfill').use(nodePolyfillWebpackPlugin)
}
但這不支持fs模塊的polyfill 。
當我嘗試添加此內容時:
if (!cfg.resolve.fallback) {
cfg.resolve.fallback = {}
cfg.resolve.fallback.fs = false
}
現在我收到一個錯誤:
TypeError: fs.readFileSync is not a function
我也嘗試在我的 package.json 中添加這個,同樣的行為(正如預期的那樣):
"browser": {
"fs": false
}
但是……我如何fs在我的電子應用程式中使用?
uj5u.com熱心網友回復:
現在可以想通了。在這里添加它,以防將來有人可能需要它。我看到很多人問這個問題,但沒有解決。
所以..我將它添加到電子預加載.js,因為fs /內置節點模塊可以通過渲染器訪問:
import { contextBridge } from 'electron'
const fs = require('fs')
contextBridge.exposeInMainWorld('electronFs', {
readFileSync: fs.readFileSync,
existsSync: fs.existsSync
// Other fs methods here
})
并在 Vue / JS / 模塊中像這樣使用它:
const fs = window.electronFs
const jsonContent = JSON.parse(fs.readFileSync(SOME_PATH))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/379572.html
