2016-02-28 54 views
0

我想学习JSPM,因为它似乎是安装客户端JavaScript的未来。我不是试图使用ES6或TypeScript,但实际上是使用CoffeeScript编译为浏览器的“标准”JavaScript。我使用包含在./public中的公用文件运行node.js,并且可以从路径/访问它。JSPM System.import 404s

已经安装JSPM我的package.json配置为:

"jspm": { 
    "directories": { 
    "baseURL": "public", 
    "packages": "public/lib" 
    } 
} 

它配置,像这样:

System.config({ 
    baseUrl: '/', 
    defaultJSExtensions: true, 
    transpiler: false, 
    paths: {} 
}); 

在此设置下我运行:jspm install lodash将安装包public/lib/npm/[email protected]。在我的应用程序JavaScript中,我期望能够运行:

System.import('lodash'); 

并且会期望返回一个Promise。但是,我在/lodash.js上获得了404。所以,为了解决这个问题,我决定使用显式路径来联系:lib/npm/[email protected]/lodash。这似乎解决了lodash 404,但后来我得到了/buffer.js/process.js的404,我认为它是lodash的依赖关系。

当然,还有比这更好的方法吗?我在这里错过什么?!我遇到的部分困难是大多数示例似乎都使用了与我无关的ES6导入指令。

回答

0

看来你缺少你的systemjs配置一些路径:

System.config({ 
    baseURL: "/", 
    defaultJSExtensions: true, 
    transpiler: false, 
    paths: { 
    "github:*": "lib/github/*", 
    "npm:*": "lib/npm/*" 
    }, 

    map: { 
    "lodash": "npm:[email protected]", 
    ... 
    "npm:[email protected]": { 
     "buffer": "github:jspm/[email protected]", 
     "process": "github:jspm/[email protected]" 
    }, 
    ... 
    } 
}); 

此外,你应该对你的package.json宣布lodash依赖性:

{ 
    "jspm": { 
    "directories": { 
     "baseURL": "public", 
     "packages": "public/lib" 
    }, 
    "dependencies": { 
     "lodash": "npm:[email protected]^4.6.1" 
    } 
    } 
}