【发布时间】:2019-03-11 14:47:57
【问题描述】:
我正在尝试将 exports-loader 与我的 webpack 配置一起使用,但在尝试配置它时遇到了问题。
webpack.config.js
module.exports = {
module: {
rules: [
{
test: require.resolve('./src/globals.js'),
use: 'exports-loader?file,parse=helpers.parse'
}
]
}
};
./src/globals.js
var file = 'blah.txt'
var helpers = {
test: function() { console.log('test something'); },
parse: function() { console.log('parse something'); }
}
./src/index.js
import { file } from './globals.js'
console.log('the file', file);
我的应用程序构建良好,但是当我尝试运行它时,我得到:
WebpackOptionsValidationError:配置对象无效。 Webpack 已使用与 API 架构不匹配的配置对象进行初始化。
- configuration.module.rules[0].test 应该是以下之一:
- configuration.module.rules[0].test:提供的值“./src/globals.js”不是绝对路径!
为了完全清楚,我了解绝对路径和相对路径之间的区别,并且我知道我使用的值是相对路径。我的困惑有两个方面:
-
require.resolve允许相对路径,为什么我不能用 在这里? - 如果我不能使用相对路径,我该如何引用该文件?
我尝试使用test 属性的绝对路径,如下所示:
test: require.resolve(path.join(__dirname, 'src/globals.js'))
但是当我尝试运行时出现此错误:
错误:找不到模块'/workspace/my-app/dist/src/globals.js
所以我被困住了。如何正确配置此加载程序以正确引用该文件?
【问题讨论】:
-
你试过了吗:
test: path.join(__dirname, 'src/globals.js')? -
这允许我构建和运行,但
file在我的./src/index.jsconsole.log 语句中未定义。所以我仍然不确定它是否配置正确...... -
据我所知,
test基本上需要一个正则表达式,所以任何具有有效文件路径的字符串都应该是可以的,所以你不需要明确地需要require.resolvefortest工作。现在,除此之外,我不知道为什么您的项目没有按预期捆绑。祝你好运! -
谢谢。发布新问题以跟进此问题的其余部分。
-
您的问题中有一些我不清楚的地方:您只是想让
webpack-exports-loader在您的常规 .js 文件中工作?还是更多?
标签: javascript webpack exports-loader