JSPM System.import 404s

时间:2016-02-28 19:12:36

标签: jspm

我正在尝试学习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导入指令。

1 个答案:

答案 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"
    }
  }
}