2016-02-28 39 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" 
    } 
    } 
}