我正在编写一个自定义webpack加载器,需要知道它当前正在修改的文件的路径,并且阅读loader documentation,我发现该属性是" resourcePath& #34;,但是当我检查加载器中的上下文时,我拥有的所有属性都是:
{ data: undefined,
inputValue: undefined,
query: '?mykey=value',
async: [Function: async],
callback: [Function],
cacheable: true }
我的webpack配置文件如下所示:
module: {
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: '../plugins/myloaderloader.js?mykey=value'
}
]
}
加载器本身只是一个普通的导出函数,它根据加载器文档接受一个字符串。我错过了什么或者这可能是个错误吗?
谢谢!
答案 0 :(得分:4)
实际上, resourcePath 可用。如果您执行console.log(this.resourcePath)
,则会看到源的完整路径。但如果你console.log(this)
,输出将与你在问题中写的一样。我认为这是因为toString()
对象的this
方法,是的,这有点令人困惑。
答案 1 :(得分:0)
如果仍然遇到相同的问题,请小心使用:
your-loader.js
module.exports = function(source) {
//...
}
代替
module.exports = (source) => {
//...
}