我对Webpack很新,但无法弄清楚为什么我的ProvidePlugin调用没有按预期工作。
我有以下文件:
var App = function() {
getSomething: function(size) {}
}();
module.exports = App;
我希望这个'App'变量可以全局访问,因为其他文件使用它是这样的:
var Layout = function () {
App.getSomething('md');
}();
在webpack.config.js中,我有以下一行:
new webpack.ProvidePlugin({ App: 'app' })
这是我的参赛作品:
entry: {
'app': './angularApp/metronicapp.ts',
}
import './metronic/global/scripts/app';
app
是我app.js
的显示位置。
我在浏览器中收到以下错误:
的 Cannot find module "app"
当我在控制台中编译webpack时:
的 Module not found: Error: Can't resolve 'app'
我无法想象我错过了什么。我的app.js格式不正确吗?为什么App
仍然无法在全球范围内使用?
答案 0 :(得分:6)
ProvidePlugin
需要指向全局模块App.js
的路径。
const path = require('path');
...
plugins: [
new webpack.ProvidePlugin({
App: path.resolve(__dirname, './path_to_App.js')
})
]
对于Typescript,不要抱怨未定义的构造创建
global.d.ts
declare var App: any;
无需在./metronic/global/scripts/app
内导入metronicapp.ts
,webpack将在构建时解析App
。
App.getSomething('foo');
var Layout = function() {
App.getSomething('md');
}();