私はこのレンガの壁に頭をぶつけて1日経ちましたので、SOに助けを求める時が来たと思います!私はbabelv5からプロジェクトを更新しようとしています、私はpackage.jsonでこれから始めています:
"devDependencies": {
"babel": "^5.8.21",
"test": "mocha --require babel/register",
v6とv7の両方でbabelにアップグレードしようとしましたが、どちらも成功しませんでした。どちらの場合もTypeError: _application.ApplicationClient is not a constructor
、v5で正常に機能するテストを実行しようとすると次のようになります。
import { ApplicationClient } from '../src/wiotp/sdk/application';
...
let client = new ApplicationClient();
例としてv6を使用すると、package.jsonに次のようになります。
"devDependencies": {
"babel-cli": "^6.0.0",
"babel-core": "^6.0.0",
"babel-preset-env": "^1.7.0",
"mocha": "6.1.4",
"test": "mocha --require babel-core/register --timeout 5000",
.babelrcファイルを作成しました(以前は存在しませんでした):
{
"presets": ["env"]
}
私はここで何が起こっているのかを理解しようとして12以上の記事を読み、同様の問題のGoogle検索に基づいて提案された多数の「修正」を実行して元に戻しましたが、ゼロから始めて、それを信じられないほど難しいと感じています最初に実際の問題が何であるか、そしてそれを解決するためにここでbabelがどのように構成されているかについての簡単な平易な英語の説明を入手してください。v5でデフォルトで発生したことが、今は.babelrcで何らかの方法で構成する必要があると思いますが、/ shrugs /はここからどこに行くべきかわかりません。
v5、6、7の違いは言うまでもなく、頭をバベルに巻き付けるのに苦労している人へのアドバイスはありますか?
編集:
src / wiotp / sdk / application /index.jsには次のものがあります。
import { default as ApplicationClient } from './ApplicationClient';
export default {
ApplicationClient
}
src / wiotp / sdk / application / ApplicationClient.jsに単一のクラスがエクスポートされている場合(テストコードでそのクラスのインスタンスを作成しようとしています):
export default class ApplicationClient extends BaseClient {
constructor(config) {
src / wiotp / sdk / application /index.jsには次のものがあります。
import { default as ApplicationClient } from './ApplicationClient'; export default { ApplicationClient }
これは恐ろしいことであり、あなたの問題を引き起こしています。そのモジュールはデフォルトで、名前付きエクスポートを使用するのではなく、オブジェクトリテラルをエクスポートします。それはバグかもしれません、そして彼らはどちらかを書くことを意図していました
import { default as ApplicationClient } from './ApplicationClient';
export { ApplicationClient }
または
export { default as ApplicationClient } from './ApplicationClient';
問題を報告し、パッチを提供することをお勧めします。
これがバグとは見なされないが意図的に行われた場合は、コードを次のように変更する必要があります。
import application from '../src/wiotp/sdk/application';
…
let client = new application.ApplicationClient();
// ^^^^^^^^^^^^
または、元のモジュールから直接インポートします。
import ApplicationClient from '../src/wiotp/sdk/application/ApplicationClient.js';
// ^^^^^^^^^^^^^^^^^^^^^
…
let client = new ApplicationClient();
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加