【问题标题】:Which meteor file should npm import statements go?npm import 语句应该使用哪个流星文件?
【发布时间】:2019-04-06 06:12:30
【问题描述】:

我们正在开发一个旧的流星项目,该项目正在升级到 1.8,我们需要能够将一些旧的流星包更改为 npm 版本(例如时刻)。

我们遇到的问题是,我们似乎无法确定我们需要在整个树中放置导入语句的哪个文件,因为到目前为止,无论我们把它放在哪里,我们都会在 Web 控制台中收到以下错误。

SyntaxError: import declarations may only appear at top level of a module 

我们已经尝试了几乎所有客户端中的文件,包括startup.js,但无法破解。

这些导入声明应该放在哪里?

【问题讨论】:

    标签: meteor npm


    【解决方案1】:

    此消息表示您的客户端浏览器包未正确转译。这可能有两个原因:

    • 您的 Meteor 项目不会将代码转换为 ES5 语法,例如如果它缺少 ecmascript 包,或者 babel、babel 运行时等。
    • 你从node_modules 导入一个仍然有这个import 关键字的文件:默认情况下,Meteor 假定npm 模块已经可以按原样使用并且没有重新编译(为了性能)。大多数情况下,这是因为 npm 模块的默认导入文件是 esm 格式(在 package.json"main" 字段中指定的文件),但通常也会提供转译或捆绑的形式。在这种情况下,只需显式导入 dist / transpiled 文件而不是默认包文件。

    在某些情况下,某些模块不会发布此类转译版本。在这种情况下,您必须先自己进行转译。另见Compile a package in node_modules for use in browser

    【讨论】:

    • 感谢 ghybs 的回复,但我无处可去。我有流星 npm install --save @babel@latest 和时刻。我试过 sudo npm install --global moment。尝试在没有导入的情况下运行并且未定义变量.. 仍然没有乐趣。
    • "main" 字段的package.json 文件的momentjs 库指向一个没有任何import 语句的文件,所以它不是你的罪犯。您需要查找您导入的仍具有此关键字的库。在开发模式 (meteor run) 下,浏览器语法错误应将您指向一个捆绑的非缩小文件,该文件会提示您使用关键字的库。
    猜你喜欢
    • 2010-10-09
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 2011-11-01
    • 1970-01-01
    相关资源
    最近更新 更多