2016-11-22 80 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几个小时前就出现了,因为“这不可能是正确的! –

相关问题