问题标签 [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.
reactjs - SystemJS:如何防止加载相同依赖项的不同版本?
我正在使用 React 0.14.0-alpha2 和 React Router 0.13.3 设置一个项目。不幸的是,路由器依赖于 React 0.13.x,这就是 React 或加载两个版本的原因。这会导致以下奇怪的问题:
可能未处理的拒绝 [2] 错误:不变违规:addComponentAsRefTo(...):只有 ReactOwner 可以拥有 refs。这通常意味着您正在尝试将 ref 添加到没有所有者的组件(即不是在另一个组件的
render
方法中创建的)。尝试在一个新的顶级组件中渲染这个组件,该组件将保存 ref。
使用 SystemJS,是否有可能强制只使用一个特定版本的依赖项?我已经尝试了以下方法,但没有帮助:
这与此处报告的问题类似,仅使用 SystemJS:https ://github.com/rackt/react-router/issues/1003
javascript - 使用 Babel 编译后无法在浏览器中查看原始 ES6 源代码
总之,我使用 SystemJS 和 Babel 作为转译器来学习如何在我的浏览器上从 ES6 生成 ES5 代码。当我尝试使用 Chrome 开发工具查看源代码时,我看到的是 ES5 代码,而不是我原来的 ES6 代码。我babelOptions
在我的 SystemJS 中使用默认值config.js
,如下所示:
我可以看到插入到生成的 Javascript 底部的内联源映射,格式如下:
Chrome 不应该解释那行并向我显示 ES6 代码而不是 ES5 代码吗?我是否误解了这样的内联源映射应该如何工作?(我已经在 Chrome 43.0.2357.65 和 45.0.2411.0 上尝试过。我也在 Firefox 38.01 上尝试过,但没有成功。我正在运行 Mac OS X 10.10.2。)任何帮助将不胜感激。
npm - 谁能解释一下 es7 reflect-metadata 是什么?
已经学习 ES6、JSPM 和 angular2 一个星期了,我发现了这个 repo ES6-loader
如果我们查看底部脚本中的 index.html,您会看到
这是使用 JSPM 的 systemjs polyfill 来获取 ES6 的import
.
问题: 在这种情况下,反射元数据真正做了什么?npm reflect-meta阅读文档越多,我就越不了解它的作用?
javascript - 使用多个 baseurl 的 ES6 异步模块
ES6 模块系统似乎非常适合统一 CommonJs / AMD 语法。作为 requireJs/AMD 用户,我想转换为 ES6 模块(现在使用 babel.js)。
不过似乎有一个问题;通读文档和教程,似乎无法加载依赖于多个 baseurl 的模块包。使用 requireJs 可以使用以下context
字段解决:
在 main.js
在 plugin-lazyloading-deps.js
在 ES6 异步模块导入中这是不可能的,因为System
是单例
我的问题是:我错过了文档中的某些内容(可能将 System 子类化以能够配置多个 baseUrls),或者这是否正在为未来的模块扩展工作?
typescript - Angular 没有 NameService 的提供者
我在将类加载到 Angular 组件时遇到问题。我一直在尝试解决它很长时间;我什至尝试将它们全部加入一个文件中。我所拥有的是:
应用程序.ts
服务/NameService.ts
我不断收到一条错误消息说No provider for NameService
。
有人可以帮我发现我的代码的问题吗?
javascript - system.js 从另一个文件夹导入
我有public/index.html
和src/app.js
。
在里面index.html
我有以下system.js
调用来加载app.js
<script>System.import('../src/app');</script>
它失败并出现以下错误:
GET https://registry.jspm.io/src/app.js 404 (Not Found)
从另一个文件夹加载文件的语法应该是什么?
angular - jspm.io 正在远程搜索我的本地模块
我有一个非常奇怪的问题。下面的代码工作正常。但是,如果我将 Angular 脚本更改为我的本地脚本。突然间,当
运行时,它会在 jspm.io 上搜索脚本,而不是我的本地. 为什么是这样?
javascript - 如何配置 SystemJS 以将新的模块实例加载到 Jasmine 测试套件中
我们使用 RequireJS、Bower 和 npm 已经有一段时间了。现在我们对 jspm 和 SystemJS 印象深刻。
我们喜欢他们:
- 与 AMD 合作,最大限度地减少转换现有代码的痛苦
- 允许我们利用新特性编写 ES2015 模块
- 有一个与他们维护的 RequireJS 类似的配置文件。
- 允许我们从 Node 和 GitHub 中提取不需要在 bower 注册的库
我们能找到的唯一禁止我们进行切换的事情是,我们需要一种方法来告诉 SystemJS 为我们提供所需模块的新实例,这些实例被加载到包含 Jasmine 测试套件的模块中。
使用 RequireJS,我们通过像这样向窗口添加一个 createRequireContext 来做到这一点
然后我们在 Jasmine 测试套件中调用 createRequireContext:
在 beforeEach 中创建一个新的上下文会隔离每个测试所需的模块。在 beforeAll 中创建一个新的上下文可以将所需的模块与其他测试套件中的使用隔离开来。
有没有办法可以用 SystemJS 和 jspm 做到这一点?
javascript - 如何使用 Systemsj 配置我的 index.html 以使用现有捆绑包?
我有一个小型 TypeScript helloworld 应用程序,它使用捆绑文件中的 aurelia.io 框架并使用 SystemJS 进行配置。当我运行我的应用程序时,我编译的 typescript 版本会helloworld.ts
抛出一个错误,内容如下:
在我看来,该函数define
是由 SystemJS 声明的,所以这可能是一个配置问题。该框架似乎可以正常加载,但我发现 systemjs 函数无法识别很奇怪。
这是我的项目层次结构和配置文件。我究竟做错了什么?
我的文件夹结构如下所示:
我已经安装了 jspm,并按照提示创建了一个默认的 config.js 文件。我从默认更改的唯一选项是使用 babel 作为转译器。
我的 config.js 看起来像这样:
我的 index.html 看起来像这样:
我的helloword.ts
样子是这样的:
完整的错误:
javascript - 如何使用 TypeScript 加载 System.js 模块?
我试图让 TypeScript 使用默认的 Aurelia 骨架,它基于 System.JS 作为加载器。
我无法让 TypeScript 接受模块导入。我将其中一个骨架文件“nav-bar.js”重命名为“nav-bar.ts”,看看是否可以将示例转换为 TypeScript。该代码导致编译器错误:“错误:(5, 24) TS2307:找不到外部模块‘aurelia-framework’。”
如何让 TypeScript 将 aurelia-framework 视为有效导入?项目的根目录中有一个名为 config.js 的文件,它似乎描述了“aurelia-framework”的具体位置,但 TypeScript 不知道如何加载它。
在此先感谢您的帮助。