react reactjs npm ecmascript-6 browserify

reactjs - head react



Browserify no puede encontrar el módulo npm (2)

Debe hacer que React libs esté disponible para su código.

Ejecute esto para agregar browserify-shim:

npm i browserify-shim -D

Agrega esto a tu package.json:

"browserify": { "transform": [ "browserify-shim" ] }, "browser": { "react": "./node_modules/react/dist/react.js", "react-dom": "./node_modules/react-dom/dist/react-dom.js", "lodash": "./node_modules/lodash" }, "browserify-shim": { "./node_modules/react/dist/react.js": "React", "./node_modules/react-dom/dist/react-dom.js": "ReactDOM", "./node_modules/lodash": "lodash" }

Por cierto, también puede usar browserify externos en su configuración para reducir aún más el paquete resultante. Es mejor no incluir, por ejemplo: Reaccionar en tu paquete.

Nota:

También te envié un PR en Github para la solución.

Estoy intentando crear un módulo NPM con mucho dolor: react-smallgrid

import React from ''react''; import _ from ''lodash''; export default class SmallGrid extends React.Component{

Compilado con

browserify: { options: { transform: [ [''babelify'', { presets: [''react'', ''es2015''] }] ] }, jsx: { files: { ''./dist/js/smallgrid.js'': [ ''./src/smallgrid.jsx'', ] } },

Cuando importo el archivo js en otro proyecto / jsx e intento identificarlo, aparece el error:

Error: No se puede encontrar el módulo ''./ReactMount'' desde ''/ Users / me / code / react-smallgrid / dist / js''

Pensé que ya está compilado para su uso? No entiendo esto

mientras tanto

He intentado construirlo con webpack, lo que da el siguiente resultado:

> webpack -p Hash: 00fd87c95d39230bd485 Version: webpack 1.12.11 Time: 14002ms Asset Size Chunks Chunk Names smallgrid.js 248 kB 0 [emitted] smallgrid + 160 hidden modules WARNING in smallgrid.js from UglifyJs Condition always true [./~/react/lib/ReactMount.js:764,0] Condition always true [./~/react/lib/findDOMNode.js:46,0] Condition always true [./~/react/lib/instantiateReactComponent.js:80,0]

Todavía no funciona.


Su problema parece ser que está proporcionando el código transpilado como su biblioteca. El código transpilado incluye ReactMount internamente. Debe proporcionar el código fuente para utilizarlo como biblioteca. Entonces se transpilará correctamente con browserify. Mire cualquier otra biblioteca de npm y creo que verá que proporcionan la fuente para usar en sus importaciones.

Como indicaste en tu comentario. @ madox2 en No se puede importar el módulo ES2015 respondido con;

"scripts": { "compile": "babel --presets es2015,stage-0 -d dist/js/ src/" }

Entonces, npm install -g babel babel-preset-es2015 babel-preset-stage-0. Entonces npm ejecuta compilar. Eso debería poner tu código transpilado en dist / js.