在节点模块中处理__dirname

时间:2017-01-13 07:28:43

标签: 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'));

1 个答案:

答案 0 :(得分:0)

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

node: { __dirname: true }