问题标签 [systemjs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2478 浏览

jquery - jspm:导入 jQuery 插件时出错

我正在尝试使用 jspm/SystemJS导入一个 jQuery 插件(即https://github.com/Mottie/Keyboard )。

起初,我只需键入以下命令即可安装模块:

然后,在导入 jQuery 之后,我在代码中添加了导入库的行:

但是,在运行代码时,我遇到了以下错误:

谷歌搜索错误并没有为我提供解决方案,至少不是我能理解的解决方案......我不知道这里是否有一些 jspm 大师可以帮助我?:)

提前谢谢了...

0 投票
1 回答
1513 浏览

javascript - systemJS 的相对动态加载,使用 ES6/Babel 语法

我有一个用纯 ES6 编写的模块,我想在单独的 Web 应用程序中使用它。该模块的入口点是 main.js 并包含以下内容:

main.js

当我使用 systemJS 导入 thismain.js时,它会尝试将这些依赖项解析到 Web 应用程序本地,而不是模块。

获取http://localhost:9000/dist/a.js 404(未找到)

我看到已经支持相对动态加载,但它涉及向函数传递一个额外的System.import函数,我没有使用它——我使用的是 ES6 语法。

有没有关于如何做到这一点的示例或最佳实践?谢谢,麻烦您了。

0 投票
1 回答
1134 浏览

jspm - 如何填充依赖于全局 jQuery 和 lodash 的非 CommonJS、非 AMD 包?

我第一次使用 jspm 并且已经遇到了障碍。

我需要弄清楚如何“填充”我们公司私有 npm 注册表中的专有脚本。

包裹:widget

  • 驻留在私有 npm 注册表上
  • 不是CommonJS、UMD/AMD 模块
  • 取决于lodashand jquery,但假设它们存在于全局范围内
  • 暴露Widget在全球范围内

这是(假设的)代码

应用程序.js

索引.html

当我在本地 Web 服务器中运行此页面时,出现错误:

未捕获的参考:_ 未定义

我怎样才能提供一个“垫片” widget

0 投票
1 回答
1172 浏览

javascript - 将动态 ES6 System.import 转译为 ES5(amd 或其他)

我通过调用它们来坚持动态请求 es6 模块:

它与es6-module-loader浏览器中的 babel 运行时编译配合得很好,但是当我想将它预编译为ES5语法(用于生产用途)时,它只是System.import在代码中传递表达式,几乎没有改变,只是用System.import等效System['import']的 .

我已经尝试过gulp-babelbabelnpm包。因此,当在浏览器中打开时,它会出现预期的模块加载错误。如何将我的代码转换AMDES5. 希望得到您的帮助。

0 投票
2 回答
610 浏览

angularjs - Angularjs 打字稿迁移

我有一个相当大的 angularjs 应用程序,我最终将迁移到 Angular 2。

我想采取我现在可以采取的任何步骤,使未来的迁移更容易。

我正在将我的控制器和服务转换为打字稿,并将我的文件组织在面向组件的文件夹结构中。

我真正想做的是使用 es6 样式的模块加载。

我知道 system.js 现在可以提供加载功能,我可以在 typescript 1.5 中使用 es6 import 语法。

我的问题是,我应该如何将两者结合使用?我应该从 typescript 输出 es6 模块并使用 system.js 模块加载生成的代码吗?还是需要其他步骤?

0 投票
1 回答
664 浏览

browserify - 从 ES6 模块生成 browserify 输出和 System.register() 模块?

我按照2ality的最终语法示例对 ES6 模块进行了编码,没有.js后缀。

我还将模块组织成供应商/项目目录层次结构和模块命名方案,因为System.register()模块格式有效地将已注册的模块放置到相同的命名空间中。

问题如下,如果我引用 2ality 的例子:

上面的代码可以直接在浏览器中正常工作,例如,使用traceures6-module-loader(请参阅参考资料example-es6-modules.html)。当import遇到声明时,.js后缀似乎会自动附加到文件名,并被lib.js加载。只要System.paths配置为指向 vendor/project 目录的顶部,就可以直接在浏览器中执行 ES6 模块。

当使用SystemJS builder捆绑到单个System.register()模块格式文件时,上述内容也可以正常工作(请参阅参考资料)。只要在生成模块时设置为供应商/项目层次结构的顶部(请参阅builder.js),那么模块就会以供应商/项目前缀命名。example-system-register.htmlbaseURL

问题是,当我尝试为 browserify 的输入生成 CommonJS 模块,同时执行转换traceur并且es6ify不将.js后缀附加到声明中的文件名时import,会导致以下几行错误:

上面的错误是因为traceur没有给import声明添加.js后缀。'gso/eonjs/MomentRecurRule'否则会找到该文件。

如果 ES6 模块被转编译为单个 CommonJS 模块,browserify 会报告相同的错误,找不到要导入的文件 - browserify 也不会类似地自动.js为导入文件名添加后缀。

那么问题是,ES6 模块在浏览器中执行没有问题,System.register()也可以作为捆绑模块加载,但是如何转换为浏览器可执行文件?

0 投票
1 回答
974 浏览

javascript - SystemJS/Aurelia 应用程序在 PhantomJS 中中断

我一直在尝试在 Phantom 中进行一些测试,但 Aurelia/SystemJS 似乎在 Phantom 中出现了问题。

我已经用我自己的应用程序和 Aurelia 联系人应用程序示例对其进行了测试,它们略有不同。我将在这里列出我捕获的输出:

应用程序联系人:

我的应用程序:

FWIW 这些都在 Chrome/FF 中运行良好,我在 OS X 10.10 上运行 PhantomJS 1.9.8

这也是我用来测试这些和从控制台输出的幻影脚本:

要运行联系人应用程序(第一个示例),请运行以下命令:

这假设您已经安装了node,jspmgulp安装了。然后就可以运行上面的 phantomjs 脚本了。

有任何想法吗?

0 投票
4 回答
4094 浏览

javascript - 如何使用 JSX 在本地运行 SystemJS/React 演示?

我现在正在关注这个视频教程,我坚持使用简单的 HelloWorld 应用程序。在时间位置12m:31s是我被卡住的地方,它应该显示HelloWorld但它没有。

该应用程序使用 SystemJs、React 和 JSX。

要创建应用程序,请在终端中执行以下步骤(需要节点和 jspm):

  • npm initenter对所有人)
  • jspm initenter几乎所有人,除了使用 babel)
  • jspm install fetch=npm:whatwg-fetch
  • jspm install react
  • 创建一个应用程序子文件夹创建main.js并将我的代码复制到其中
  • 创建index.html到根目录。
  • 然后用serve运行它

我认为问题是我的本地服务器。我用 nodejs 运行它,http-server我认为 JSX 没有转译为 JS。提到的serve服务器也无法正常工作。

我在浏览器控制台中收到此错误消息:

我如何使它工作?

这是我的代码,正是视频中的代码(这里没有运行,因为没有添加 js 文件):

0 投票
1 回答
291 浏览

javascript - Babel.js 没有加载到 Systemjs 的转译器上

在使用作为 systemjs 的时,我在 chrome 控制台遇到了这个错误。

我怀疑JSX转译失败是因为没有加载确切地说,chrome 的网络选项卡中没有调用browser.min.js(babel-browser)堆栈。

你可以在这里看到代码。

0 投票
1 回答
761 浏览

node.js - System.import 异步模块加载与脚本标签同步加载冲突

我开始使用带有 atom/electron 的 JSPM 来移植我使用 Marionette 构建的网站。

我的所有应用程序都是围绕 Marionette 模块编写的,所以我想在启动应用程序之前加载所有 JavasSript 文件。

我遇到了System.import(). 在 System.import 完成加载 App 代码后,您将如何加载脚本?

对于生产,我对此没有任何问题,因为我将连接单个 js 模块中的所有文件并使用 System.import 加载该模块,但这将是调试的噩梦,我更愿意单独加载文件。

有什么想法吗?谢谢!