class型コンポーネントをexportしてもobjectとしてimportされる
受付中
回答 0
投稿
- 評価
- クリップ 2
- VIEW 467
やりたいこと
Reactのcomponentをnpmにnode_moduleとして公開したいです。
起きたこと
webpackで出来たものをbundleして、それをimportしてもobjectとしてimportされエラーが起きる。ローカルサーバーで建てたときはうまくimportできました。
出てくるエラーはこんな感じです。
エラーの内容を見てもどこがミスっててるのかがいまいちわかりません。
皆さんの知見をお貸しください。
コード
index.tsx(bundleするComponent)
import React from 'react'
interface(以下略)
export default class App extends React.Component<Props,State>{
render(){
return(
<div>
This is App
</div>
)
}
package.json
{
"name":"test-app",
(略)
"main":"lib/bundle.js",
"scripts":{
"start":"webpack-dev-server --mode development",
"build":"webpack --mode production"
},
(略)
}
webpack.config.js
const path = require('path');
module.exports = {
mode:"production",
entry: path.join(__dirname,"./App.tsx"),
module: {
rules: [
{
test: /\.ts(x?)$/,
loader: 'ts-loader',
exclude: /node_modules|lib/,
},
{
test: /\.js(x?)$/,
loader:'babel-loader',
exclude: /node_modules|lib/,
},
{
test: /\.scss$/,
use:["style-loader","css-loader","sass-loader"]
},
{
test: /\.css$/,
use:["style-loader","css-loader"]
}
]
},
resolve: {
modules: ["node_modules"],
extensions: ['.js','.jsx','.ts','.tsx']
},
output: {
path: path.join(__dirname,"./lib/"),
filename: "bundle.js"
}
}
index.js(node_moduleをimportする側)
import React from 'react'
import App from 'test-app'
interface(略)
export default class Test extends React.Component <Props,State> {
render(){
return(
<div>
<App />
</div>
)
}
}
よろしくお願いします!!
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
まだ回答がついていません
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.32%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正の依頼
teloo
2019/06/05 19:47 編集
以下について確認いただけますでしょうか?
1. test-app は index.js で呼び出す側の node_modules 下に npm build 後で存在するという認識で正しいでしょうか?
2. lib/bundle.js の内容はどのようになっているのでしょうか?
3. index.js の `render()` 内の return の前に `console.log(App);` すると、どのような出力がされるのでしょうか?
1 で、念のために前提条件を確認します。
2 の意図は、index.js が実際に import する対象は TypeScript を JavaScript に変えた後だからです。
3 の意図は、React の コンポーネントは関数かクラスを想定していたが、オブジェクトだったというエラーメッセージだと認識しています。
では、どのようなオブジェクトとなっていたのかをこれで把握したいです。