Saya membuat modul npm dengan bantuan create-react-library ,
Saya yang saya gunakan html-react-parser.
tetapi setelah mengimpor html-react-parser, itu memberikan kesalahan
[!] Error: Unexpected token
node_modules/entities/maps/entities.json (1:9)
1: {"Aacute":"\u00C1","aacute":"\u00E1","Abreve":"\u0102","abreve":"\u0103","ac":"\u223E","acd":"\u223F","acE":"\u223E\u0333","Acirc":"\u00C2","acirc":"\u00E2","acute":"\u00B4","Acy":"\u0410","acy":"\u0430","AElig":"\u00C6","aelig":"\ ....very long json
error Command failed with exit code 1.
Hai @KARTIK01 , bisakah Anda memberikan langkah-langkahnya sehingga saya dapat mereproduksi masalah? Dan tolong beri tahu saya versi OS, node, npm/benang apa yang Anda gunakan.
Kesalahan tampaknya berasal dari entities.json
, yang digunakan oleh htmlparser2
, ketergantungan perpustakaan ini untuk penguraian di sisi server.
Hai @remarkablemark , berikut adalah informasi untuk mereproduksi kesalahan ini.
OS: MacOS Mojave Versi 10.14.1
Versi Node: v10.14.1
benang: 1.12.3 (saya menggunakan benang untuk proyek ini)
npm: 6.4.1
Langkah-langkah untuk Menghasilkan.
create-react-library
yarn add html-react-parser
src/index.js
tambahkan pernyataan impor.
import Parcer from 'html-react-parser'
yarn start
lagi.saya menggunakan rendering sisi klien.
Tampaknya rollup tidak memeriksa bidang "browser"
di html-react-parser
's package.json
.
Karena pustaka bersifat isomorfik (berjalan di server dan klien), bidang browser adalah yang memberi tahu bundler seperti webpack untuk mengganti kode tertentu dengan kode yang kompatibel dengan browser.
Mengimpor pustaka versi klien akan mengatasi kesalahan:
// src/index.js
import Parser from 'html-react-parser/dist/html-react-parser'
Beri tahu saya jika itu berhasil untuk Anda.
Terima kasih @remarkablemark ,
Sekarang berfungsi dengan baik, hanya memberi peringatan.
(!) Use of eval is strongly discouraged
https://github.com/rollup/rollup/wiki/Troubleshooting#avoiding-eval
node_modules/html-react-parser/dist/html-react-parser.js
109: /***/ (function(module, exports, __webpack_require__) {
110:
111: eval("var domToReact = __webpack_require__(/*! ./lib/dom-to-react */ \"./lib/dom-to-react.js\");\nvar htmlToDOM = __webpack_require__(/*! html-dom-parser */ \"./node_modules/html-dom-parser/lib/html-to-dom-client.js\");\n\n// decode HTML entities by default for `htmlparser2`\nvar domParserOptions = { decodeEntities: true, lowerCaseAttributeNames: false };\n\n/**\n * Convert HTML string to React elements.\n *\n * <strong i="8">@param</strong> {String} html - The HTML string.\n * <strong i="9">@param</strong> {Object} [options] - The additional options.\n * <strong i="10">@param</strong> {Function} [options.replace] - The replace method.\n * <strong i="11">@return</strong> {ReactElement|Array}\n */\nfunction HTMLReactParser(html, options) {\n if (typeof html !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n return domToReact(htmlToDOM(html, domParserOptions), options);\n}\n\n/**\n * Export HTML to React parser.\n */\nmodule.exports = HTMLReactParser;\n\n\n//# sourceURL=webpack://HTMLReactParser/./index.js?");
^
112:
113: /***/ }),
...and 15 other occurrences
Saya pikir ini adalah masalah rollup.
Saya setuju @KARTIK01. Jangan ragu untuk menutup masalah jika sudah teratasi.
Komentar yang paling membantu
Tampaknya rollup tidak memeriksa bidang
"browser"
dihtml-react-parser
'spackage.json
.Karena pustaka bersifat isomorfik (berjalan di server dan klien), bidang browser adalah yang memberi tahu bundler seperti webpack untuk mengganti kode tertentu dengan kode yang kompatibel dengan browser.
Mengimpor pustaka versi klien akan mengatasi kesalahan:
Beri tahu saya jika itu berhasil untuk Anda.