我有一个带有 ecmascript@0.5.8 的meteor 1.4.1.1应用程序。当我在主流星应用程序的任何文件中编写以下表达式时,一切正常。
const {a, b} = {a:1, b:2};
但是当同一表达式位于 node_modules / some-module 中的JS文件中时,meteor应用程序失败并出现以下错误:
W20160910-00:34:14.284(5.5)? (STDERR) const {a,b} = {a: 1, b: 2};
W20160910-00:34:14.284(5.5)? (STDERR) ^
W20160910-00:34:14.285(5.5)? (STDERR)
W20160910-00:34:14.285(5.5)? (STDERR) SyntaxError: Unexpected token {
W20160910-00:34:14.285(5.5)? (STDERR) at exports.runInThisContext (vm.js:53:16)
W20160910-00:34:14.285(5.5)? (STDERR) at Module._compile (module.js:373:25)
W20160910-00:34:14.285(5.5)? (STDERR) at Object.Module._extensions..js (module.js:416:10)
W20160910-00:34:14.286(5.5)? (STDERR) at Module.load (module.js:343:32)
W20160910-00:34:14.286(5.5)? (STDERR) at Module.Mp.load (/home/chaudharyp/.meteor/packages/babel-compiler/.6.9.1.s4764v++os+web.browser+web.cordova/npm/node_modules/reify/node/runtime.js:16:23)
任何人都可以帮我吗?感谢。
答案 0 :(得分:1)
通常,npm包在es5中分发,因此es6包在发布之前就会被转换。因此,大多数构建设置都会告诉babel忽略node_modules文件夹。这很重要,因为如果它试图转换所有的npm包,它会严重减慢构建速度。我不熟悉这种流星设置,但我确信它遵循这种常规做法。
通常,您无论如何都不会直接在node_modules文件夹中乱七八糟。如果您正在开发自己的软件包,并且不希望每次进行更改时都必须发布和更新,那么您应该尝试npm link。然后你可以指出你的包裹"主要"到像/ dist这样的文件夹,你可以将代码转换为。当您在包项目中进行转换时,您的流星项目将获取更新。