流星找不到再出口模块
问题描述:
我正在写一个使用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"
...
谢谢,但我确实指定我使用Babel编译到ES5,所以这不是问题。 –