如何纠正NodeJS找不到安装的软件包?

刚刚经历了Angular2 的英雄之旅教程,真正享受NPM系统,然后我去添加我的第一个包。

我添加了“eveonlinejs”:“^ 2.0.0”到我的package.json并运行“npm install”

安装的软件包和文件夹存在于node_modules中。

运行我的服务器,但结果。

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

有问题的线是

 import { eveonlinejs } from 'eveonlinejs'; 

从我的研究中,我相信导入应该打到“node_modules / eveonlinejs”目录中的package.json,并看到设置的“main”属性。

我已经尝试删除清除NPMcaching并重新安装node_modules文件夹。

我也尝试使用require语句指向目录,但是我得到一个缺less的“sax”模块,该模块安装在“eveonlinejs”目录中。

更新:

感谢@ nem035我已经得到了一些进展,但已经停止使用导入,但发现使用require时出现404错误。

通过添加下面的代码,我可以更进一步:

systemjs.config.js

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

这让我回到了“萨克斯”的错误。 我发现由于某种原因,Sax已经从eveonlinejs文件夹移出到根节点模块文件夹。

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

这纠正了萨克斯问题,但给我所有这一切!

 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是什么样子,那我就出去了。 哈哈!

你应该做的第一件事是删除导入周围的{}

 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 

现在,如果您使用的是当前在github上的eveonlinejs版本,这可能无法工作,具体取决于您如何parsing模块(以及此过程如何处理module.exports )。

安全的方法是只使用require:

 var eveonlinejs = require('eveonlinejs');