Как объявить сторонние модули глобальными, чтобы мне не нужно было импортировать?(Webpack5 с typescript)

#reactjs #typescript #webpack

#reactjs #typescript #webpack

Вопрос:

В моем проекте React with Webpack я объявляю некоторые модули глобальными, поэтому мне не нужно импортировать их каждый раз, когда я хочу их использовать.

В моем файле Webpack:

 plugins: [
        new webpack.ProvidePlugin({
            '_': 'lodash',
            'React': 'react',
            'moment': 'moment'
        })
   ]
 

Теперь я могу использовать _,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.
 

Мой файл 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"
  ]
}
 

Как я могу сообщить typescript, что эти библиотеки уже являются глобальными и что они существуют?

Ответ №1:

Удалось решить эту проблему, добавив следующее в мой файл tsconfig

 "allowUmdGlobalAccess": true,