我正在使用jspm和SystemJS导入ES2015模块.
是否可以通过System对象或其他任何位置获取项目中所有导入模块的列表?我可以通过访问我的项目特定模块System._loader.moduleRecords,但是我通过jspm安装的模块(例如d3,jquery)不会出现在此列表中.
System._loader.modules包含所有模块的列表,但遗憾的是还包括转换我的代码和模块加载包所需的模块列表.
System._loader.moduleRecords (项目模块)

System._loader.modules (项目模块,库,transile包)

我只想要一个已声明的导入列表,特别是我导入的导入列表import x from 'x'.这应该包括这两个项目的模块和库,但不巴贝尔/模块加载相关的模块.我想解决方案不涉及使用正则表达式进行过滤.
我正在尝试使用jspm/SystemJS 导入jQuery插件(即https://github.com/Mottie/Keyboard).
首先,我只需输入以下命令即可安装模块:
jspm install github:mottie/keyboard
Run Code Online (Sandbox Code Playgroud)
我在导入jQuery之后添加了在我的代码中导入库的行:
import keyboard from 'mottie/keyboard';
Run Code Online (Sandbox Code Playgroud)
但是,在运行代码时,我遇到以下错误:
Uncaught TypeError: Multiple defines for anonymous module
Run Code Online (Sandbox Code Playgroud)
谷歌搜索错误没有给我一个解决方案,至少没有一个我能理解的...我不知道这里是否有一些jspm大师可以帮助我?:)
提前谢谢了...
我正在尝试在VSO Hosted Build Controller上为Aurelia进行构建.我创建了一个小的PowerShell脚本来运行以下命令
npm install
.node_modules/.bin/jspm cc
.node_modules/.bin/jspm install -y
.node_modules/.bin/gulp build
Run Code Online (Sandbox Code Playgroud)
我确实有AfterBuild目标将jspm_packages和dist文件夹复制到我的_publishedWebsites文件夹.
npm install运行正常,但是当涉及到jspm cc时(如果我删除jspm cc并让它运行jspm install -y),它就会尝试这个
jspm cc
Migrating global jspm folder from C:\Users\buildguest\.jspm to C:\Users\buildguest\AppData\Local\.jspm...
Copying configuration...
err Error migrating to new jspm folder
2>EXEC : error : ENOENT, no such file or directory 'C:\Users\buildguest\.jspm\config' [d:\a\src\WebGUI\OwinAureliaScaffold\OwinAureliaScaffold.csproj]
at Object.fs.openSync (evalmachine.<anonymous>:427:18)
at Object.fs.readFileSync (evalmachine.<anonymous>:284:15)
at Object.<anonymous> (d:\a\src\WebGUI\OwinAureliaScaffold\public\node_modules\jspm\lib\global-config.js:36:24)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> …Run Code Online (Sandbox Code Playgroud) 目前,我正在尝试使用带有 ES6 转译器 Babel 和 Karma 的 Node/AngularJs/JSPM 设置一个演示项目。
服务部分正在工作。我需要稍后改进它,但是来自 angular 的第一个“hello world”正在工作。
我想添加 Karma 来运行 angular 应用程序的单元测试。但是我收到了 404 警告jspm_packages,请参见下面的屏幕截图。
我的测试没有运行,因为它总是会失败。我的测试文件看起来像这样(那里还没有特定角度的部分):
// HomeController.spec.js
import 'angular-mocks';
describe('Test suite for HomeController', function() {
it('dummy test', function() {
expect(true).toBe(true); // will not fail
});
});
Run Code Online (Sandbox Code Playgroud)
不知道出了什么问题,我尝试了很多事情都没有成功,也许我做错了什么。但这是我在 Karma 配置中尝试过的:
我的应用程序的目录结构如下所示:

这是 Karma 的屏幕截图:

这是我当前的 Karma 配置文件:
module.exports = function(config) {
config.set({
// base path that will be used to …Run Code Online (Sandbox Code Playgroud) 我正在使用JSPM来构建React应用程序.在构建期间捆绑解决方案时,我想使用类似的东西"envify"整个解决方案(我的代码库加上任何库,如React)NODE_ENV=production jspm bundle ./src/main ./dist/main.min.js --minify.我已经尝试了几十种不同的方法,但似乎并不适用于整个代码库.
我对jspm比较陌生.我想知道在运行时有什么区别jspm install package和npm install package.我知道有一个jspm/registry查找.但是在设置方面有什么不同config.js.如果使用npm安装软件包,是否还有其他更改?
使用angular 2.0.1(发布)和ng2-file-upload 1.1.0(最新版本)运行此代码时出现上述错误.我正在使用带有systemjs的jspm来捆绑我的应用程序(所有这些都是最新的).
import {Component, NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {FileUploadModule} from 'ng2-file-upload';
@Component({
selector: 'uploader',
templateUrl: '/build/templates/uploader.html'
})
export class UploaderComponent {
uploader = new FileUploader({url: '/upload'});
hasBaseDropZoneOver = false;
fileOverBase(event) {
this.hasBaseDropZoneOver = event;
}
clearQueue() {
this.uploader.clearQueue();
}
}
console.log(FileUploadModule);
@NgModule({
imports: [CommonModule, FileUploadModule],
declarations: [UploaderComponent],
exports: [UploaderComponent]
})
export class UploaderModule {};
Run Code Online (Sandbox Code Playgroud)
如果我检查FileUploadModule的值,它看起来非常好,就像它看起来就像我检查过的所有其他模块一样.我的应用程序中还有其他所有功能,但这一部分.这个模块的"意外"是什么?
完整错误:
错误:(SystemJS)模块'UploaderModule'(...)导入的意外值'FileUploadModule'
这是FileUploadModule导出的相对部分,对我来说很好
var FileUploadModule = (function() {
function FileUploadModule() {}
FileUploadModule = __decorate([core_1.NgModule({
imports: [common_1.CommonModule],
declarations: [file_drop_directive_1.FileDropDirective, file_select_directive_1.FileSelectDirective],
exports: …Run Code Online (Sandbox Code Playgroud) 我遇到了一个似乎无法解决的问题.应该可以通过执行中提供的步骤来删除路由中的前一个hashtag RouterConfiguration -> Options-> Push State.
我已经执行了所有这些步骤,请参阅下面的代码.
app.ts RouterConfiguration选项
public configureRouter(config: RouterConfiguration, router: Router) {
config.options.pushState = true;
config.options.root = '/';
config.map([
{
route: 'login',
name: 'login',
moduleId: 'pages/auth/login',
nav: false,
title: 'Login',
settings: {
allow_anonymous: true
}
}
]);
...
Run Code Online (Sandbox Code Playgroud)
index.html头
<head>
<meta charset="utf-8">
<base href="/">
...
Run Code Online (Sandbox Code Playgroud)
config.js
System.config({
baseURL: "/",
...
Run Code Online (Sandbox Code Playgroud)
我的登录路线仍然只能使用localhost:9000/#/login而localhost:9000/login无法找到.我也试过在一个新的Aurelia JSPM骨架应用程序中实现它无济于事......
知道为什么会这样,我可能做错了什么?
在捆绑的生产构建中,我看到一个网络请求:systemjs-plugin-babel@0.0.21.json来自缓存 ...在同一个实例上,它无法完全加载到我的应用程序.
它无法加载从http:// thehost/myapp/jspm_packages/npm路由的任何内容
我的理解是,在捆绑的JSPM模块中,它不应该从这种路由加载,因为所有内容都捆绑到build.js文件中.
我目前使用以下gulp任务捆绑我的应用程序:
gulp.task('jspm-bundle', plugins.shell.task([
'node node_modules/jspm/jspm.js bundle myapp/index.jsx' +
' + myapp/things/**/*.jsx + myapp/otherthings/**/*.jsx' +
' + systemjs-plugin-babel + babel-preset-stage-0 + transform-react-jsx' +
' + transform-decorators-legacy' +
' --minify --skip-source-maps'
])
Run Code Online (Sandbox Code Playgroud)
我不知道从哪里开始...有人能告诉我为什么捆绑的应用程序甚至会尝试向浏览器发出这种请求的原因吗?
更新1:
有一次,我们看到一个承诺拒绝似乎与这个单一的客户有关:
Unhandled promise rejection Error: Syntax Error
Instantiating http://myhost/myapp/jspm_packages/npm/systemjs-plugin-babel@0.0.21.json
Loading http://myhost/myapp/jspm_packages/npm/systemjs-plugin-babel@0.0.21.json
Unable to fetch package configuration file http://myhost/myapp/jspm_packages/npm/systemjs-plugin-babel@0.0.21.json
Resolving plugin-babel to http://myhost/myapp/app/index.jsx
Resolving myapp/index.jsx
Loading myapp/index.jsx
Run Code Online (Sandbox Code Playgroud)
更新2:
我的FULL SystemJS配置:https://pastebin.com/aJFPqNGn
更新3(上次更新?):
如果我从'npm:systemjs-plugin-babel'明确导入,我可以在生产中重新创建问题,但我无法解释为什么在客户端安装的生产中会发生这种导入.发生语法错误是因为对不存在的文件的请求返回登录html并且在html中的第一个'<'上发生语法错误
我正在尝试与 Rails 7 中的 importmaps 集成chartjs,但它不起作用
我尝试过以下过程
bin/importmap pin "chart.js@^3.8.0" --download
Run Code Online (Sandbox Code Playgroud)
这是我的 application.js
import 'chart.js'
Run Code Online (Sandbox Code Playgroud)
我在 chrome 控制台中收到以下错误,我相信它与 ES 模块有关
Get http://localhost:5000/_/e09df68b.js` net::ERR_ABORTED 404 (Not Found) chart.js-67657cw24cb.js:1
Run Code Online (Sandbox Code Playgroud)
我是否遗漏了某些内容,或者尚无法将 Chart.js 与 Rails 7 集成
jspm ×10
systemjs ×4
aurelia ×2
ecmascript-6 ×2
javascript ×2
angular ×1
angularjs ×1
azure-devops ×1
chart.js ×1
import-maps ×1
jquery ×1
karma-runner ×1
rails7 ×1
reactjs ×1