流星找不到再出口模块

流星找不到再出口模块

问题描述:

我正在写一个使用ES6的流星应用程序,我有一些子组件,我想保留为独立的npm软件包。我有一个名为frog-utils的库,它在所有包*享,并且包含通用的帮助函数。流星找不到再出口模块

当我尝试重新导出模块青蛙-utils的,它正常工作与普通节点,但流星抱怨说:

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) 

(这里是从普通节点为例,在相同的目录)

~/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] } 

我写在ES6,用巴贝尔创造其由模块暴露出的输出文件,和ES5似乎没什么问题:

var _color_range = require('./color_range'); 

Object.defineProperty(exports, 'color_range', { 
    enumerable: true, 
    get: function get() { 
    return _interopRequireDefault(_color_range).default; 
    } 
}); 

(这是我使用ES6线)

export {default as color_range} from './color_range' 

哪个节点的版本是你的测试?我敢打赌,如果你做了meteor node并且尝试了相同的require('frog-utils'),它就行不通了,因为meteor目前使用节点4.5(至少在1.4.X)。

恐怕如果不编译它,您将无法在npm包中使用ES6(另请参阅https://github.com/meteor/meteor/issues/4828)。然而,编译不是很困难,你可以看看我是如何解决一个非常类似的问题: https://github.com/chfritz/ros_msg_utils/blob/add_babel/package.json

诀窍是定义一个脚本,它使用babel在安装时编译代码。

... 
    "main": "dist/index.js", 
    "scripts": { 
    "compile": "babel --presets es2015 index.js -d dist/ && babel --presets es2015 lib -d dist/lib/", 
    "preinstall": "npm run compile" 
    ... 
+0

谢谢,但我确实指定我使用Babel编译到ES5,所以这不是问题。 –

这似乎已经在最新版本流星(1.4.2.1)已经解决了,突然下起“公正的工作”。

+0

你应该把奖金奖励给千年发展目标或你自己(你已经付钱了,所以你应该给它) – Mikkel