【发布时间】:2020-05-16 11:12:30
【问题描述】:
我有一个电子应用程序需要读取存储在%appdata%(或 macOS 和 linux 的等效文件)中的文件。我正在像这样导入文件
const appPath = app.getPath("appData");
const data = await import(appPath + "/app/file.json");
如果我从源文件运行代码,它可以工作,但是当我尝试将它与 webpack 捆绑时,我收到 Module not found 错误。我知道这是因为 webpack 试图对我的导入进行分析。
那么有没有办法在 webpack 中动态导入文件呢?
提前致谢!
编辑:我的 webpack 配置(没有 babel,因为我使用的是 typescript)
var path = require("path");
const CopyPlugin = require('copy-webpack-plugin');
var nodeExternals = require('webpack-node-externals');
module.exports = {
mode: 'production',
entry: "./src/index.ts",
externals: [nodeExternals()],
output: {
filename: "main.js",
path: path.resolve(__dirname, 'build')
},
node:{
__dirname:false
},
target: "electron-main",
resolve: {
alias: {
['firebase/app']: path.resolve(__dirname, 'node_modules/firebase/app/dist/index.cjs.js'),
['firebase']: path.resolve(__dirname, 'node_modules/firebase/dist/index.node.cjs.js')
}, extensions: ['.ts', '.js']
},
module: {
noParse: "/public/**/*",
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/,
},
// {
// test: /\.json$/,
// loader: 'json-loader'
// }
],
},
plugins: [
new CopyPlugin([
{ from: './src/public', to: './public' }
]),
]
}
【问题讨论】:
-
分享你的 webpack 和 babel 配置。
-
你的应用什么时候需要读取这个文件?应用程序何时运行或构建时?
-
在运行时。我会再次尝试使用 fs,因为很多人告诉我,但我很确定 fs 产生了同样的错误
标签: javascript node.js webpack ecmascript-6 electron