如何纠正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');