2016-11-22 150 views
2

剛剛通過了Angular2的Tour of Heroes教程,並真正享受NPM系統,然後我去添加我的第一個包。如何更正NodeJS找不到已安裝的軟件包?

我補充說:「eveonlinejs」:「^ 2.0.0」我的package.json就跑「故宮安裝」

安裝軟件包的文件夾存在於node_modules。

運行我的服務器,但導致英寸

app/eveapi.service.ts(2,29): error TS2307: Cannot find module 'eveonlinejs'. 

有問題的行是

import { eveonlinejs } from 'eveonlinejs'; 

從我的研究,我認爲,應該進口打的package.json在「node_modules/eveonlinejs 「目錄並查看設置的」主「屬性。

我已嘗試刪除清除NPM緩存並重新安裝node_modules文件夾。

我也嘗試過使用require語句指向目錄,但後來我在「eveonlinejs」目錄中安裝了「sax」的缺少模塊。

更新:

感謝@ nem035我已經變得有點futher和使用進口然而發現使用需要當我得到一個404錯誤已停止。

我能加入這個代碼進一步得到了一步:「薩克斯」

systemjs.config.js

'eveonlinejs': 'npm:eveonlinejs/lib/eveonline.js' 

這讓我回包括具有差錯我發現由於某種原因,Sax已經從eveonlinejs文件夾移出到根節點模塊文件夾。

'sax': 'npm:sax/lib/sax.js' 

這改正了Sax問題,但是給了我所有這些!

zone.js:1382 GET http://localhost:3000/node_modules/eveonlinejs/lib/client 404 (Not Found) 
dashboard:17 Error: (SystemJS) XHR error (404 Not Found) loading http://localhost:3000/node_modules/eveonlinejs/lib/client 
zone.js:1382 GET http://localhost:3000/node_modules/eveonlinejs/lib/cache/cache 404 (Not Found) 
zone.js:1382 GET http://localhost:3000/node_modules/eveonlinejs/lib/cache/file 404 (Not Found) 
zone.js:1382 GET http://localhost:3000/node_modules/eveonlinejs/lib/cache/memory 404 (Not Found) 
zone.js:1382 GET http://localhost:3000/stream 404 (Not Found) 
zone.js:1382 GET http://localhost:3000/string_decoder 404 (Not Found) 

這些我修復的每個人都會揭示另一個‽如果這就是NodeJS是什麼樣的,那我就出來了。哈哈!

回答

1

您應該做的第一件事是刪除圍繞導入的{}

import { eveonlinejs } from 'eveonlinejs'; 
// ----^-------------^-------------------- Remove the curly braces 

你可能想這

import eveonlinejs from 'eveonlinejs'; 

的原因是因爲包裝{}各地進口嘗試提取該文件名爲導出,但你要把整個庫。

// import { eveonlinejs } from 'eveonlinejs' expects export code as 
export { 
    eveonlinejs 
} 

當你離開了括號,在import嘗試提取默認的導出。

// import eveonlinejs from 'eveonlinejs' expects import as 
export default eveonlinejs 

現在,如果你使用eveonlinejs這版本是目前github,這可能行不通取決於你如何(有module.exports以及如何處理交易)transpiling的模塊。

的安全的方法是隻使用要求:

var eveonlinejs = require('eveonlinejs'); 
+0

感謝在括號中的解釋,但我仍然無法得到它的工作。 嘗試沒有括號,然後嘗試使用「要求」的方法。 With require require '(404 Not Found)loading http:// localhost:3000/eveonlinejs' 對我來說這似乎很奇怪。 –

+0

不客氣,很高興幫忙,如果可以的話。根據你所說的,'require'方法正在工作,現在你有第二個問題,那就是服務器不處理'/ evenonlinejs'路由。 – nem035

+0

似乎你回答了我的問題:「你不能做你想做的事。」這是一個可靠的答案,但我無法找到關於「requirejs 404錯誤」的問題。我老實說,404幾個小時前就出現了,因爲「這不可能是正確的! –

相關問題