如何将第三方模块声明为全局变量,这样我就不需要导入?(Webpack5 with typescript)

Van*_*idi 2 typescript reactjs webpack

在我的 React with Webpack 项目中,我将一些模块声明为全局变量,这样我就不必每次想使用它们时都导入它们。

在我的 Webpack 文件中:

plugins: [
        new webpack.ProvidePlugin({
            '_': 'lodash',
            'React': 'react',
            'moment': 'moment'
        })
   ]
Run Code Online (Sandbox Code Playgroud)

现在我可以在任何地方使用 _,React,moment 而无需显式导入它。

将 Typescript 添加到项目后,我收到如下错误:

'moment' refers to a UMD global, but the current file is a module. Consider adding an import instead.

'_' refers to a UMD global, but the current file is a module. Consider adding an import instead.
Run Code Online (Sandbox Code Playgroud)

我的 tsconfig 文件:

{
"compilerOptions": {
    "jsx": "react-jsx",
    "allowSyntheticDefaultImports": true,
    "module": "commonjs",
    "noImplicitAny": true,
    "outDir": "./build/",
    "preserveConstEnums": true,
    "removeComments": true,
    "sourceMap": true,
    "target": "es5"
},
"include": [
    "src/index.tsx"
  ]
}
Run Code Online (Sandbox Code Playgroud)

我如何告诉打字稿这些库已经是全局的并且它们存在?

Van*_*idi 5

设法通过将以下内容添加到我的 tsconfig 文件来解决此问题

"allowUmdGlobalAccess": true,
Run Code Online (Sandbox Code Playgroud)