初めてnpmパッケージ(ES6 + Babel)をビルドしています。エンドユーザーがインポートできるようにすべての接続に問題があります。JSプロジェクトの一部を適切にエクスポート/インポートする
私のビルド(出力)フォルダ構造は、srcと同じである:
build
- index.js
- BaseClass.js
sublclasses
- SubClassA.js
- SubClassB.js
SubClassA
とSubClassB
インポートおよびBaseClass
を拡張し、両方module.exports
を使用してエクスポートされます。エントリポイント、index.js
は、2つだけの行があります
import SubClassA from './subclasses/SubClassA'
import SubClassB from './subclasses/SubClassB'
package.json
を./build/index.js
からmain
フィールドが設定されています。テストプロジェクトにプロジェクト(またはNPMのリンク)をインストールする場合
、私が書く:
import SubClassA, SubClassB from 'my-package'
インポートは動作しますが、インポートされたクラスが定義されていません。私はそれをするためにいくつかの方法を試しましたが、うまくいきませんでした。
どうすればよいですか?
EDIT:それは一種の作品
import SubClassA from './subclasses/SubClassA'
import SubClassB from './subclasses/SubClassB'
module.exports = SubClassA
module.exports = SubClassB
:へindex.js
を変更した後。
import SubClassA, SubClassB from 'my-package'
してから実行します:
let sca = new SubClassA()
それはSubClassB
であることが判明した「のようなものは、」私はそうのようなテストプロジェクトで両方のクラスをインポートする場合ことを意味します。インポートからSubClassB
を削除すると、正常に動作します。
EDIT 2 - SOLUTION:以下のコメントで指示に従って
、私はそうのようなindex.js
ファイルに変更しました:
export { default as SubClassA } from './subclasses/SubClassA'
export { default as SubClassB } from './subclasses/SubClassB'
を、私はそうのようなテストプロジェクトでそれをインポート:
import { SubClassA, SubClassB } from 'my-project' and it worked.
あなたがメインファイルからSubClassAとBを輸出していますか? – maioman
@maiomanあなたは正しいですが、私のようにメインファイルにインポートするだけでは不十分です。それらを輸出し、再建し、それは働いたが、今度は新しいひねりを加えた。私は1分で私のアンカーを更新します。 – dnmh
あなたは 'my-package''から 'import {SubClassA、SubClassB}'と一緒に使うべきです – maioman