javascript - que - onclick void 0
Meteor no puede encontrar el módulo reexportado (2)
Estoy escribiendo una aplicación Meteor usando ES6, y tengo una serie de subcomponentes que quiero mantener como paquetes npm separados. Tengo una biblioteca llamada frog-utils, que se comparte en todos los paquetes y que contiene funciones de ayuda comunes.
Cuando trato de volver a exportar un módulo en frog-utils, funciona bien con un nodo simple, pero Meteor se queja de que:
W20161114-10:12:17.483(1)? (STDERR) Error: Cannot find module ''./color_range''
W20161114-10:12:17.484(1)? (STDERR) at require (packages/modules-runtime.js:109:19)
W20161114-10:12:17.484(1)? (STDERR) at meteorInstall.node_modules.frog-utils.dist.index.js (packages/modules.js:17407:20)
(Aquí hay un ejemplo del nodo simple, en el mismo directorio)
~/s/F/frog (ac-collab) $ node
> frogutils = require(''frog-utils'')
{ color_range: [Getter],
uuid: [Function: uuid],
currentDate: [Function: currentDate],
booleanize: [Function: booleanize],
shorten: [Function: shorten],
compose: [Function: compose],
composeReducers: [Function: composeReducers],
notEmpty: [Function: notEmpty],
identity: [Function: identity],
getKey: [Function: getKey] }
Escribo en ES6, uso Babel para crear los archivos de salida que están expuestos por el módulo, y el ES5 me parece bien:
var _color_range = require(''./color_range'');
Object.defineProperty(exports, ''color_range'', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_color_range).default;
}
});
(Aquí está la línea ES6 que uso)
export {default as color_range} from ''./color_range''
Esto parece haberse resuelto en la última versión de Meteor (1.4.2.1), de repente comenzó a "solo funcionar".
¿Con qué versión de nodo estás probando? Te apuesto a que si meteor node
y probaras el mismo require(''frog-utils'')
no funcionaría, porque el meteorito usa actualmente el nodo 4.5 (al menos en 1.4.X).
Me temo que no podrá usar ES6 en su paquete npm sin compilarlo (también vea https://github.com/meteor/meteor/issues/4828 ). Sin embargo, la compilación no es muy difícil, puede ver cómo resolví un problema muy similar en: https://github.com/chfritz/ros_msg_utils/blob/add_babel/package.json
El truco es definir una secuencia de comandos que compila el código usando Babel en la instalación.
...
"main": "dist/index.js",
"scripts": {
"compile": "babel --presets es2015 index.js -d dist/ && babel --presets es2015 lib -d dist/lib/",
"preinstall": "npm run compile"
...