gpt4 book ai didi

typescript - 未捕获的 TypeError : i18next. init 不是一个函数

转载 作者:行者123 更新时间:2023-12-05 01:19:02 32 4
gpt4 key购买 nike

我正在为我的项目使用 typescript ,并使用 i18next 进行内部化。

typescript :v2.1.4

i18next: v2.3.4

@types/i18next: v2.3.35

在我的文件中:

import * as i18next from 'i18next';

i18next.init({
lng: 'en',
resources: {
en: {
translation: {
"key": "hello world"
}
}
}
}, (err, t) => {
// initialized and ready to go!
const hw = i18next.t('key'); // hw = 'hello world'
});

然而,在浏览器中它说:

Uncaught TypeError: i18next.init is not a function

如果我记录 i18next 对象,它看起来像:

enter image description here

在控制台中

i18n.default.init

效果很好。

如果像文档一样导入

import i18next from 'i18next';

在 visual studio 代码中会提示: enter image description here

我的.tsconfig

{
"compileOnSave": true,
"compilerOptions": {
"removeComments": false,
"baseUrl": "./src",
"target": "es6",
"moduleResolution": "node",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"noImplicitAny": true,
"strictNullChecks": true,
"jsx": "preserve",
"lib": [
"es2017",
"dom"
],
"typeRoots": [
"./node_modules/@types"
],
"types": [
"node",
"poly2tri",
"three",
"i18next"
]
}
}

我的 webpack.config.js 太长了,无法阅读。

我想知道是否与文档有关:http://www.typescriptlang.org/docs/handbook/declaration-files/templates/module-class-d-ts.html

/*~ Note that ES6 modules cannot directly export class objects.
*~ This file should be imported using the CommonJS-style:
*~ import x = require('someLibrary');
*~
*~ Refer to the documentation to understand common
*~ workarounds for this limitation of ES6 modules.
*/

最佳答案

您遇到的问题与

有关

https://github.com/Microsoft/TypeScript/issues/7398

https://github.com/Microsoft/TypeScript/issues/8687

https://github.com/systemjs/systemjs/issues/1587

发生的事情是 TypeScript 和 Babel/NodeJS 中的模块解析语法不同。

在 Babel/NodeJS(最新草案)中,使用语法导入 CommonJS 模块:

import i18n from 'i18next'

即CommonJS 模块被移动到 ES6 模块的 default 导出。

然而,TypeScript 并不遵循这条路线:

import * as i18n from 'i18next'

因此,当被tsc编译为es6时,这个导入语句保持原样。因此 Babel 做了错误的事情。

请在上述问题中大声疾呼,以引起团队的更多关注。

这个问题真的应该是 P1 并尽快修复。

目前,一种解决方案是通过 tsc 将您的代码编译为 es5。

关于typescript - 未捕获的 TypeError : i18next. init 不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42477112/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com