javascript - 从 Node 应用程序获取文件的路径

标签 javascript node.js webpack

我有一个应用程序,其结构如下所示:

.
├── index.js
├── unix
│   ├── index.js
└── win32
    ├── foo.exe
    └── index.js

win32/index.js 正在访问 foo.exe,如下所示:

let command = path.join(__dirname, "foo.exe") + ' -some-arguments';
exec(command);

但现在使用 Webpack,我将应用程序编译到一个 bundle.js 中,并将该 foo.exe 放在它旁边:

.
├── foo.exe
└── bundle.js

现在 path.join(__dirname, "foo.exe") 不再起作用。它找不到 foo.exe。我已将其更改为

  let command = path.resolve(
    "node_modules/my-library/dist",
    "foo.exe"
  );

它工作得很好,但看起来有更好的方法。

更新:

我的 Webpack 配置文件:

const path = require("path");
const CopyPlugin = require("copy-webpack-plugin");

module.exports = {
  mode: "production",
  entry: "./src",
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "bundle.js",
    libraryTarget: "umd"
  },
  plugins: [new CopyPlugin([{ from: "./src/win32/foo.exe" }])],
  target: "node"
};

最佳答案

要让 __dirname 以通常的方式运行,并且不被 Webpack 更改( mock ),您必须在 Webpack 配置中添加一个属性:

module.exports = {
  //...
  node: {
    __dirname: false,
  }
};

Documentation

关于javascript - 从 Node 应用程序获取文件的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57196632/

相关文章:

javascript - 类型 'styleName' 上不存在属性 'HTMLProps<HTMLDivElement>'

css - 无法使用 webpack 设置 React 组件的样式

javascript - 如何从外部访问webpack包(js)中的mobx对象

javascript - 有关此代码中 "undefined"用法的澄清吗?

javascript - react 导航 3 : Open modal with createBottomTabNavigator and createStackNavigator

javascript - 如何向机器人添加其他功能?

javascript - Node.js:如何用 C++ 创建 ES6 模块

javascript - 如何在没有隔离范围的指令中获得双向数据绑定(bind)?

javascript - 新消息到达时闪烁浏览器任务栏图标以获取通知?

javascript - node.js/socket.io如何分离html的javascript?