node.js - 在 Node 模块中处理 __dirname

标签 node.js webpack

我使用的是 pdfkit 包,它本身也使用 fontkit。 在开发模式下运行包含的 Express 应用程序时,生成 PDF 文件工作正常,但当应用程序与 webpack 捆绑在一起时,解析某些路径似乎不起作用。

我已经提交了 issue ,但我的问题更笼统:

如果 npm 包在某处使用 __dirname 来访问相对路径,我必须如何配置 webpack 来考虑它?

这是我当前的配置:

var Webpack = require('webpack');
var path = require('path');
var buildPath = path.resolve(__dirname, 'build');
var mainPath = path.resolve(__dirname, 'src', 'app.js');

var config = {

  target: 'node',
  entry: mainPath,
  output: {
    path: buildPath,
    filename: 'bundle.js'
  },
  node: {
    console: 'empty',
    fs: 'empty',
    net: 'empty',
    tls: 'empty',
    dns: 'empty',
    __dirname: false,
    __filename: false
  },
  module: {
    loaders: [
        {
            test: /\.js$/,
            loader: 'babel',
            query: {
                presets: ['es2015']
            }
        },
        {
            test: /\.json$/,
            loader: 'json'
        },
        ]
  }
};

module.exports = config;

我认为在 fontkit 中导致问题的行是:

var trie = new UnicodeTrie(require('fs').readFileSync(__dirname + '/data.trie'));

最佳答案

您需要在 webpack.config 中将 __dirname 设置为 true

Node :{ __目录名:true }

关于node.js - 在 Node 模块中处理 __dirname,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41629429/

相关文章:

c++ - Node : Why nodejs c++ addon is so slow?

node.js - 如何使用 PM2 运行多个 package.json 脚本之一?

node.js - 如何处理 nodejs (nowjs) 中 hgetall() 的结果?

javascript - 没有波浪号 (~) 无法从 node_modules 导入样式表

javascript - 将 block JavaScript 代码映射为仅在特定页面上运行

javascript - webpack2 使用 knockout 模板进行 tree-shaking

node.js - 解析嵌套的 Promise?

javascript - 按名称动态实例化对象

Webpack 升级 - 找不到模块 : Can't resolve node_modules

javascript - 访问 HTML 中的 data-* 属性并将其作为 props 传递