我正在尝试学习JSPM,因为它似乎是安装客户端JavaScript的未来。我没有尝试使用ES6或TypeScript,但我实际上正在使用CoffeeScript,我将其编译成'标准'用于浏览器的JavaScript。我正在使用./public中包含的公共文件在express中运行node.js,并且可以从路径/中访问。
安装了jspm后,我的package.json配置为:
"jspm": {
"directories": {
"baseURL": "public",
"packages": "public/lib"
}
}
它的配置如下:
System.config({
baseUrl: '/',
defaultJSExtensions: true,
transpiler: false,
paths: {}
});
通过此设置,我运行:jspm install lodash
,将软件包安装在public/lib/npm/lodash@4.5.1
中。在我的应用程序JavaScript中,我希望能够运行:
System.import('lodash');
并期望返回一个Promise。但是,我在/lodash.js上获得了404。所以,为了解决这个问题,我决定使用lodash的显式路径:lib/npm/lodash@4.5.1/lodash
。这似乎解决了lodash 404,但后来我获得了/buffer.js
和/process.js
的404,我认为这是lodash的依赖。
当然必须有比这更好的方法吗?我在这里想念的是什么?!我遇到的部分困难是,大多数示例似乎都使用与我无关的ES6导入指令。
答案 0 :(得分:0)
您的systemjs配置似乎缺少一些路径:
System.config({
baseURL: "/",
defaultJSExtensions: true,
transpiler: false,
paths: {
"github:*": "lib/github/*",
"npm:*": "lib/npm/*"
},
map: {
"lodash": "npm:lodash@4.6.1",
...
"npm:lodash@4.6.1": {
"buffer": "github:jspm/nodelibs-buffer@0.1.0",
"process": "github:jspm/nodelibs-process@0.1.2"
},
...
}
});
此外,您应该在package.json上声明lodash依赖项:
{
"jspm": {
"directories": {
"baseURL": "public",
"packages": "public/lib"
},
"dependencies": {
"lodash": "npm:lodash@^4.6.1"
}
}
}