【问题标题】:node-loader not handling node_modules filenode-loader 不处理 node_modules 文件
【发布时间】:2021-11-04 15:05:36
【问题描述】:

运行时

npm run electron:serve

我收到此错误:

在 ./node_modules/msnodesqlv8/build/Release/sqlserverv8.node 模块解析失败:意外字符 '�' (1:2) 您可能需要适当的加载程序来处理此文件类型,目前没有配置加载程序来处理此文件。见https://webpack.js.org/concepts#loaders

我想我理解这个错误。我的 webpack 不知道如何处理这个依赖中的 .node 文件 ("msnodesqlv8": "^2.2.0")

我尝试添加节点加载器,但没有成功。我已经尝试在我的 vue.config.js 中像这样配置它:

module.exports = {
  transpileDependencies: [
    'vuetify'
  ],
  configureWebpack: {
    devtool: 'source-map'
  },
  pluginOptions: {
    electronBuilder: {
      preload: 'preload/preload.js',
      "directories": {
        "buildResources": "build"
      },
      mainProcessWatch:['src/services/background/**'],
      "files": [
        "build/**/*",
        "!node_modules"
      ],
      "win": {
          "asar": false,
          "target": "nsis",
          "icon": "build/icon.ico"
      },
      "nsis": {
        "installerIcon": "build/icon.ico",
        "installerHeaderIcon": "build/icon.ico",
        "deleteAppDataOnUninstall": true
      }
    }
  },
  chainWebpack: config => {
    config
        .plugin('html')
        .tap(args => {
            args[0].title = "Configuration Utility";
            return args;
        });

    config.module
          .rule('node')
          .test(/\.node$/)
          .use('node-loader')
          .loader('node-loader')
          .end();

    config.module
          .rule('pug')
          .test(/\.pug$/)
          .use('pug-plain-loader')
          .loader('pug-plain-loader')
          .end();
  }
}

我也尝试添加单独的 webpack.config.js,但没有成功:

module.exports = {
    target: "node",
    node: {
    __dirname: false,
    },
    module: {
    rules: [
        {
        test: /\.node$/,
        loader: "node-loader",
        },
    ],
    },
};

我怎样才能让它工作?

【问题讨论】:

    标签: node.js webpack electron


    【解决方案1】:

    你需要将节点加载器移动到电子构建器的chainWebpack中才能工作。

    module.exports = {
      transpileDependencies: [
        'vuetify'
      ],
      configureWebpack: {
        devtool: 'source-map'
      },
      pluginOptions: {
        electronBuilder: {
          preload: 'preload/preload.js',
          "directories": {
            "buildResources": "build"
          },
          // THESE NEXT 3 LINES HERE:
          chainWebpackMainProcess: config => {
            config.module.rule('node').test(/\.node$/).use('node-loader').loader('node-loader').end()
          },
          mainProcessWatch:['src/services/background/**'],
          "files": [
            "build/**/*",
            "!node_modules"
          ],
          "win": {
              "asar": false,
              "target": "nsis",
              "icon": "build/icon.ico"
          },
          "nsis": {
            "installerIcon": "build/icon.ico",
            "installerHeaderIcon": "build/icon.ico",
            "deleteAppDataOnUninstall": true
          }
        }
      },
      chainWebpack: config => {
        config
            .plugin('html')
            .tap(args => {
                args[0].title = "Configuration Utility";
                return args;
            });
    
        config.module
              .rule('pug')
              .test(/\.pug$/)
              .use('pug-plain-loader')
              .loader('pug-plain-loader')
              .end();
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-18
      • 1970-01-01
      • 2018-12-14
      • 2018-02-12
      • 1970-01-01
      • 2019-01-08
      • 1970-01-01
      • 2019-10-01
      相关资源
      最近更新 更多