当前位置: 首页 > 知识库问答 >
问题:

Webpack ProvidePleugin全局变量(找不到模块)

苍嘉澍
2023-03-14

我有以下文件:

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.js格式不正确吗?为什么app仍然不能全局使用?

共有1个答案

栾弘新
2023-03-14

ProvidePleugin需要全局模块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;

不需要在metronicapp.ts中导入./metronic/global/scripts/app,webpack将在构建时解析app

App.getSomething('foo');
var Layout = function() {
  App.getSomething('md');
}();
 类似资料:
  • 问题内容: main.py: module.py 程序打印: 主要-之前:20 func2:20 func1:10 主-20点后 “ var”是全局变量。我希望当我更改var的值时,无论变量’var’出现在哪里,它都会被更改。func1和func2之间的唯一区别是func1在另一个模块中。仍然,我不明白为什么func1和func2之间的’var’值不同。 问题答案: python中没有真正的全局变

  • 问题内容: 我写了一个模块,我刚才将其发布到npm(https://npmjs.org/package/wisp) 因此,可以从命令行进行安装: 但是,当我从命令行运行它时,我不断收到未安装乐观主义者的错误消息: 但是,我在package.json中指定了依赖性: 有谁知道该怎么做才能使它运行?我知道它与bin部分有关,将可执行文件添加到bin中,该目录中的node_modules为空。不知道如何

  • 我写了一个模块,不久前发布到npm(https://npmjs.org/package/wisp) 所以它可以从命令行安装: 但是,当我从命令行运行它时,我不断收到一个错误,即未安装optimist: 但是,我在package.json中指定了依赖项: 有人知道该怎么做才能让它运行吗?我知道这与bin部分将可执行文件添加到bin以及该目录中的node_模块为空有关。不知道如何解决这个问题。

  • 如果你要多于一个函数共用一个简单的变量,简单的处理方法就是把这个变量在所有函数中定义为global全局变量。在命令行做同样的事情,如果你要工作空间访问上述变量。这个全局变量的定义必须出现在变量被应用于一个函数之前。虽然不是要求,但全局变量也最好以大写字母开头,这样可以同其他变量区别出来。举个例子,做一个以falling.m命名的M-文件。 function h = falling(t) globa

  • ThinkCMF封装了前台模板开发时常用的一些变量,这些变量是全局的,你在前台模板任何时候都能直接调用: {$site_name} /站点名称 {$site_host} /站点域名 {$site_root} /安装目录 {$site_icp} /

  • swoole内置了几个全局变量供程序内使用。一般不要自行创建全局变量。 SwooleG 超全局本地内存变量,此变量在swoole_init时就初始化好了。存储了一些全局的信息。但不是共享内存的。当创建子进程后再修改其中的字段,其他进程是感知不到的 SwooleG.main_reactor,全局事件循环 SwooleG.lock,全局锁 SwooleG.memory_pool,全局共享内存池 Swo