Webpack在其shimming documentation中提供了以下示例。在该页面的global exports部分中,给出了以下示例。
webpack.config.js
module.exports = {
module: {
rules: [
{
test: require.resolve('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'); }
};
但是当我尝试构建时,我得到了:
ERROR in ./webpack.config.js
Module not found: Error: Can't resolve 'globals.js' in '/workspace/my-app'
为什么globals.js
无法解析,为什么他们的文档中的示例假定可以解决?我想念什么吗?谢谢。
答案 0 :(得分:-1)
exports-loader
配置一起使用我使用以下设置进行此操作:
src / deps.js //此文件仅声明了一个全局file
变量
const file = 'this is the file';
src / app.js // Webpack捆绑包的入口点。 import
的{{1}}(即使deps.js
没有deps.js
语句,也要感谢export
):
export-loader
webpack.config.js // Webpack配置文件
import file from './deps.js'
console.log(file);
package.json //这样我们就可以在项目本地运行webpack
module.exports = {
entry: __dirname + '/src/app.js',
mode: 'development',
module: {
rules: [
{
test: /deps.js/,
use: 'exports-loader?file',
}
]
}
}
使用此设置,假设{
"name": "exports-loader-test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"webpack": "node_modules/webpack/bin/webpack.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"exports-loader": "^0.7.0",
"webpack": "^4.29.6",
"webpack-cli": "^3.2.3"
}
}
,webpack.config.js
和package.json
位于项目的根目录中,请执行以下操作:
src/
要捆绑脚本,然后:
$ npm run webpack
检查是否正在加载$ node dist/main.js
变量(将其加载到浏览器中将执行相同的操作。)
file
特定配置一起使用。(来自this other answer)。
为此,您只需import
use
,而将其加载到exports-loader
时无需任何其他配置:
webpack.config.js
然后在每个use: 'exports-loader',
语句中指定要包装在export
子句中的变量:
import
import file from 'exports-loader?file!./deps.js'
语法不起作用?我真的不知道。据我所知,require.resolve()
子句期望使用正则表达式(这就是为什么之所以称为test
的原因,因为javascript中的正则表达式的test
方法)并且我不习惯其他有效的语法。我在您的代码段中看到了这一点:
test
module.exports = {
module: {
rules: [
{
test: require.resolve('globals.js'),
use: exports-loader?file,parse=helpers.parse
}
]
}
}
值没有字符串引号。我不知道这是否破坏了配置,然后您得到一个误导性错误,我不知道。我实际上相信您只是在复制和粘贴到堆栈溢出时没有粘贴引号。