首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Webpack从%appdata进口

Webpack从%appdata进口
EN

Stack Overflow用户
提问于 2020-01-30 18:59:08
回答 3查看 182关注 0票数 3

我有一个电子应用程序,需要读取存储在%appdata%中的文件(或者macOS和linux的等效文件)。我像这样导入文件

代码语言:javascript
复制
const appPath = app.getPath("appData");
const data = await import(appPath + "/app/file.json");

如果我从源文件运行代码,它可以工作,但是当我试图与webpack捆绑时,我会得到一个Module not found错误。我知道这是webpack试图对我的进口产品进行分析造成的。

那么,在webpack中是否有一种动态导入文件的方法?

提前感谢!

编辑:我的webpack配置(没有babel,因为我使用的是打字本)

代码语言:javascript
复制
  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' }
        ]),
    ]
 }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-02-04 11:26:19

通过查看文档,答案似乎在模块方法部分:

()中的动态表达式 不可能使用完全动态的导入语句,例如import(foo)。因为foo可能是系统或项目中任何文件的任何路径。 import()必须至少包含一些有关模块所在位置的信息。..。

不清楚您是否需要在构建时或运行时读取它,如果是前者,那么请确保将文件复制到工作目录(因此该文件被捆绑在构建中),如果后者,则可以使用fs模块在运行时获取该文件。

票数 2
EN

Stack Overflow用户

发布于 2020-02-04 10:51:04

也许您可以尝试动态导入并使用这样的承诺

代码语言:javascript
复制
import(appPath + "/app/file.json").then(data => {
   console.log(data)
});
票数 0
EN

Stack Overflow用户

发布于 2020-02-04 12:26:27

我想你做不到,但是NormalModuleRpelacementPlugin可能是你问题的解决方案。您可以在构建时使用它,但是它可能取决于环境。

文件路径在代码中是相同的,但是在构建之后,它将被任意更改。

https://webpack.js.org/plugins/normal-module-replacement-plugin/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59992773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档