Redux: Mengapa "combinReduers" tidak dapat bekerja di proyek saya hari ini tiba-tiba, yang kemarin dapat bekerja dengan baik?

Dibuat pada 29 Apr 2016  ·  19Komentar  ·  Sumber: reduxjs/redux

impor { combineReducers } dari 'redux'
import { routerReducer as router } dari 'react-router-redux'
penghitung impor dari './modules/counter'
impor docManage dari './doc'

ekspor default combineReducers({ // terjadi kesalahan
menangkal,
docKelola,
router
})
TypeError Tidak Tertangkap: (0 , _redux.combineReducers) bukan functionObject.defineProperty.value @ rootReducer.js:6__webpack_require__ @ bootstrap 8921782a133419f3cb76:585fn @ bootstrap 8921782a133419f3cb76: esModule @ index.js:6__webpack_require @ bootstrap 8921782a133419f3cb76:585fn @ bootstrap 8921782a133419f3cb76:109(fungsi anonim) @ wrapActionCreators.js:6__webpack_bootsrequire__ @ bootstrap 8921782a1334 esModule @ connect.js:18__webpack_require @ bootstrap 8921782a133419f3cb76:585fn @ bootstrap 8921782a133419f3cb76:109ekspor. esModule @ index.js: 10__webpack_require @ bootstrap 8921782a133419f3cb76: 585fn @ bootstrap 8921782a133419f3cb76: 109 (fungsi anonim) @ bootstrap 8921782a133419f3cb76: 631__webpack_require__ @ bootstrap 8921782a133419f3cb76: 585 (fungsi anonim) @ bootstrap 8921782a133419f3cb76: 631 (fungsi anonim) @ bootstrap 8921782a133419f3cb76: 631

Komentar yang paling membantu

@caojinli

Ketika saya menjalankan npm install di dalamnya, saya mendapatkan

npm WARN EJSONPARSE Failed to parse json
npm WARN EJSONPARSE Unexpected end of input at 171:2
npm WARN EJSONPARSE 
npm WARN EJSONPARSE ^

Ini berarti package.json rusak. Jika kita melihat ke package.json , bagian scripts berakhir dengan tiba-tiba:

    "deploy": "better-npm-run deploy",
    "flow:check": "babel-node bin/flow-check",
    "codecov": "cat coverage/*/lcov.info | codecov"
  ,
  "betterScripts": {

Saya menemukan tempat kesalahan yang tepat dengan http://jsonlint.com/ yang memformat JSON.
Setelah menambahkan } hilang sebelum koma, saya dapat menjalankan npm install .

Setelah saya menjalankan npm start , saya mendapatkan ini:

ERROR in ./src/redux/actions/manageDoc.js
Module not found: Error: Cannot resolve module 'isomorphic-fetch' in /Users/dan/p/prodoc/src/redux/actions
 @ ./src/redux/actions/manageDoc.js 23:23-50

aku berlari

npm install --save isomorphic-fetch

untuk memperbaikinya.

Akhirnya, setelah menjalankan npm start lagi, saya mendapatkan kesalahan yang Anda jelaskan:

rootReducer.js:6 Uncaught TypeError: (0 , _redux.combineReducers) is not a function
Head.js:66 Uncaught TypeError: (0 , _reactRedux.connect) is not a function

Ternyata Anda mengaktifkan opsi resolve.root Webpack yang memungkinkan Anda mengimpor modul berdasarkan jalurnya relatif ke folder root . Masalahnya adalah Anda memiliki folder bernama redux di proyek Anda, jadi sekarang semua impor redux diselesaikan ke folder itu daripada ke Redux asli.

Menghapus resolve.root dari konfigurasi Webpack memperbaiki masalah.

Di masa mendatang, kami lebih suka Anda mengajukan pertanyaan seperti ini di StackOverflow, bukan pelacak masalah Redux. Redux adalah perpustakaan yang sangat spesifik, tetapi masalah Anda tampaknya terkait dengan penggunaan campuran 20 teknologi yang Anda gunakan bersama tanpa pemahaman mendalam tentang cara kerja masing-masing teknologi tersebut. Secara pribadi saya tidak mengerti banyak tentang apa yang terjadi di konfigurasi proyek itu, jadi saya tidak akan menggunakan contoh ini bersamaan dengan mempelajari perpustakaan seperti Redux. Itu tidak memerlukan konfigurasi itu.

Konfigurasi salin-tempel dari proyek boilerplate selalu menyebabkan masalah yang sulit di-debug seperti ini. Sangat mudah untuk melewatkan keputusan konfigurasi seseorang ketika bukan Anda yang membuatnya. Jangan gunakan proyek boilerplate kecuali Anda memahami setiap teknologi yang mereka gunakan!

Anda tidak memerlukan boilerplate untuk mulai belajar Redux. Jika Anda baru ingin mulai belajar Redux, salin halaman HTML ini dan mulailah belajar! Anda selalu dapat melihat semua proyek lain itu nanti saat Anda merasa lebih nyaman dengan Redux dan pustaka lainnya.

Semua 19 komentar

Hai! Sayangnya, informasi ini tidak cukup untuk membantu Anda. Berikan proyek yang mereproduksi masalah tersebut.

Saya menutup karena tidak ada informasi yang cukup di sini, dan kemungkinan besar ini adalah masalah penggunaan. Silakan lihat contoh untuk melihat penggunaan yang benar.

Yang bisa saya berikan informasi lebih lanjut adalah saya menambahkan beberapa modul dengan "npm" seperti thunk. kemudian mendapat kesalahan.

Berikan proyek yang mereproduksi masalah tersebut. Saya tidak dapat menemukan cara untuk mereproduksi ini, jadi sayangnya saya tidak dapat membantu Anda.

Saya tidak dapat melampirkan proyek zip saya berukuran sekitar 606KB, karena kesalahan dari git "Ada yang salah, dan kami tidak dapat memproses file itu.". Apakah ada cara lain saya bisa melampirkan proyek saya?

"Ada yang benar-benar salah, dan kami tidak dapat memproses file itu." ketika saya mencoba melampirkan kode proyek saya, Apakah ada cara lain untuk melampirkan kode saya?

Harap hapus node_modules darinya jika ada.

Anda dapat membuat repositori di GitHub dan mendorongnya ke sana daripada melampirkannya.

Setelah saya masuk" npm publish", konsol merespons saya "+ [email protected] ", saya pikir proyek saya telah diperbarui ke github sekarang, tetapi saya tidak dapat mencarinya di github, tidak tahu mengapa.

npm ERR! asing: [email protected] D:\react\react-redux-starter-kitnode_modules\inline-style-prefixer
npm ERR! asing: [email protected] D:\react\react-redux-starter-kitnode_modules\isomorphic-fetch
npm ERR! asing: [email protected] D:\react\react-redux-starter-kitnode_moduleskeycode
npm ERR! asing: lodash. [email protected] D:\react\react-redux-starter-kitnode_modules\lodash.merge
npm ERR! asing: lodash. [email protected] D:\react\react-redux-starter-kitnode_modules\lodash.throttle
npm ERR! asing: [email protected] D:\react\react-redux-starter-kitnode_modules\react-event-listener
npm ERR! asing: [email protected] D:\react\react-redux-starter-kitnode_modules\recompose
npm ERR! asing: [email protected] D:\react\react-redux-starter-kitnode_modules\redux-logger
npm ERR! asing: [email protected] D:\react\react-redux-starter-kitnode_modules\simple-assign
npm ERR! asing: [email protected] D:\react\react-redux-starter-kitnode_modules\whatwg-fetch

@caojinli : sejauh ini, sepertinya Anda sudah mencoba mempublikasikan repositori Anda sebagai paket NPM, bukan membuat repo di Github dan membuatnya tersedia. Juga, peringatan "asing" itu tidak ada hubungannya dengan Redux - itu NPM yang mengatakan bahwa ada ketidakcocokan antara paket apa yang ada di node_modules , dan apa yang terdaftar di package.json Anda.

Proyek telah ditemukan di URL https://github.com/caojinli/prodoc , siapa yang bisa mendapatkan proyek saya dengan kesalahan "combinReduer"? Terima kasih banyak.

@markerikson Saya belum mempublikasikan proyek saya ke github dan berharap Anda dapat memberikan bantuan, terima kasih.

@caojinli

Ketika saya menjalankan npm install di dalamnya, saya mendapatkan

npm WARN EJSONPARSE Failed to parse json
npm WARN EJSONPARSE Unexpected end of input at 171:2
npm WARN EJSONPARSE 
npm WARN EJSONPARSE ^

Ini berarti package.json rusak. Jika kita melihat ke package.json , bagian scripts berakhir dengan tiba-tiba:

    "deploy": "better-npm-run deploy",
    "flow:check": "babel-node bin/flow-check",
    "codecov": "cat coverage/*/lcov.info | codecov"
  ,
  "betterScripts": {

Saya menemukan tempat kesalahan yang tepat dengan http://jsonlint.com/ yang memformat JSON.
Setelah menambahkan } hilang sebelum koma, saya dapat menjalankan npm install .

Setelah saya menjalankan npm start , saya mendapatkan ini:

ERROR in ./src/redux/actions/manageDoc.js
Module not found: Error: Cannot resolve module 'isomorphic-fetch' in /Users/dan/p/prodoc/src/redux/actions
 @ ./src/redux/actions/manageDoc.js 23:23-50

aku berlari

npm install --save isomorphic-fetch

untuk memperbaikinya.

Akhirnya, setelah menjalankan npm start lagi, saya mendapatkan kesalahan yang Anda jelaskan:

rootReducer.js:6 Uncaught TypeError: (0 , _redux.combineReducers) is not a function
Head.js:66 Uncaught TypeError: (0 , _reactRedux.connect) is not a function

Ternyata Anda mengaktifkan opsi resolve.root Webpack yang memungkinkan Anda mengimpor modul berdasarkan jalurnya relatif ke folder root . Masalahnya adalah Anda memiliki folder bernama redux di proyek Anda, jadi sekarang semua impor redux diselesaikan ke folder itu daripada ke Redux asli.

Menghapus resolve.root dari konfigurasi Webpack memperbaiki masalah.

Di masa mendatang, kami lebih suka Anda mengajukan pertanyaan seperti ini di StackOverflow, bukan pelacak masalah Redux. Redux adalah perpustakaan yang sangat spesifik, tetapi masalah Anda tampaknya terkait dengan penggunaan campuran 20 teknologi yang Anda gunakan bersama tanpa pemahaman mendalam tentang cara kerja masing-masing teknologi tersebut. Secara pribadi saya tidak mengerti banyak tentang apa yang terjadi di konfigurasi proyek itu, jadi saya tidak akan menggunakan contoh ini bersamaan dengan mempelajari perpustakaan seperti Redux. Itu tidak memerlukan konfigurasi itu.

Konfigurasi salin-tempel dari proyek boilerplate selalu menyebabkan masalah yang sulit di-debug seperti ini. Sangat mudah untuk melewatkan keputusan konfigurasi seseorang ketika bukan Anda yang membuatnya. Jangan gunakan proyek boilerplate kecuali Anda memahami setiap teknologi yang mereka gunakan!

Anda tidak memerlukan boilerplate untuk mulai belajar Redux. Jika Anda baru ingin mulai belajar Redux, salin halaman HTML ini dan mulailah belajar! Anda selalu dapat melihat semua proyek lain itu nanti saat Anda merasa lebih nyaman dengan Redux dan pustaka lainnya.

@gaearon Pertama-tama, terima kasih banyak, saya belajar banyak dari balasan Anda.
Jika saya menonaktifkan resolve.root dari file konfigurasi webpack, saya mendapatkan beberapa kesalahan baru yang dapat berfungsi dengan baik sebelumnya.
GALAT di ./src/redux/configureStore.js
Modul tidak ditemukan: Kesalahan: Tidak dapat menyelesaikan modul 'wadah/DevTools' di D:\react\react-redux-starter-kit\srcredux
@ ./src/redux/configureStore.js 29:75-105

GALAT di ./src/containers/Root.js
Modul tidak ditemukan: Kesalahan: Tidak dapat menyelesaikan modul 'wadah/DevTools' di D:\react\react-redux-starter-kit\srccontainers
@ ./src/containers/Root.js 120:25-55

GALAT di ./src/routes/index.js
Modul tidak ditemukan: Kesalahan: Tidak dapat menyelesaikan modul 'tata letak/CoreLayout/CoreLayout' di D:\react\react-redux-starter-kit\src\routes
@ ./src/routes/index.js 13:18-58

GALAT di ./src/routes/index.js
Modul tidak ditemukan: Kesalahan: Tidak dapat menyelesaikan modul 'tampilan/HomeView/HomeView' di D:\react\react-redux-starter-kit\src\routes
@ ./src/routes/index.js 17:16-50

GALAT di ./src/routes/index.js
Modul tidak ditemukan: Kesalahan: Tidak dapat menyelesaikan modul 'views/HomeView/teachers' di D:\react\react-redux-starter-kit\src\routes
@ ./src/routes/index.js 21:16-50

GALAT di ./src/routes/index.js
Modul tidak ditemukan: Kesalahan: Tidak dapat menyelesaikan modul 'views/HomeView/docView' di D:\react\react-redux-starter-kit\src\routes
@ ./src/routes/index.js 25:15-48

Plus, saya memang mengganti nama folder redux dari proyek saya setelah saya membaca tanggapan Anda terhadap apa yang Anda sebutkan bahwa program akan menggunakan "redux" yang salah daripada "redux" yang sebenarnya. tapi sayangnya saya tetap tidak bisa menjalankannya walaupun sudah saya rename foldernya menjadi redux.

@gaearon Saya menemukan bahwa resolve.root di webpack.config.js sebenarnya merujuk ke redux dari src , jadi saya tidak dapat menonaktifkannya.

Jika saya menonaktifkan resolve.root dari file konfigurasi webpack, saya mendapatkan beberapa kesalahan baru yang dapat berfungsi dengan baik sebelumnya.

Ya, karena Anda tidak dapat lagi menggunakan jalur absolut yang diselesaikan secara otomatis. Inilah intinya — Anda juga harus

  • ganti nama folder Anda menjadi sesuatu selain redux sehingga resolve.root tidak mengacaukannya, atau
  • ubah semua impor Anda menjadi relatif (misalnya ../views/HomeView/docView daripada views/HomeView/docView ).

Anda tidak dapat memiliki kedua folder bernama redux dan opsi resolve.root dan berharap ini berfungsi.

@gaearon Saya menyalin kode bisnis saya (termasuk tampilan, reduxs-reducers, komponen, wadah, dan lain-lain) ke proyek lain yang dapat bekerja dengan baik, menggunakan konfigurasi yang sama (unduh dari github), proyek yang bekerja dengan sangat baik mendapat kesalahan yang sama. Jika saya menghapus kode bisnis saya darinya dan proyek bekerja dengan sangat baik lagi. Jadi saya berani mengatakan itu karena kode bisnis saya. tidak ada yang terkait dengan konfigurasi webpack dan ada folder redux di file src saya.

Jika Anda melihat kesalahan persis ini:

rootReducer.js:6 Uncaught TypeError: (0 , _redux.combineReducers) is not a function
Head.js:66 Uncaught TypeError: (0 , _reactRedux.connect) is not a function

Tidak mungkin itu disebabkan oleh kode bisnis Anda. Ini adalah kesalahan yang disebabkan oleh konfigurasi resolve.root . redux menyediakan ekspor tersebut sehingga satu-satunya cara Anda bisa mendapatkan kesalahan ini adalah jika Anda menyelesaikan redux ke sesuatu selain paket npm-nya.

Tentu saja, kesalahan lain mungkin memiliki asal yang berbeda.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat