刚经历了Angular2的Tour of Heroes教程,并且真的很喜欢NPM系统,然后我添加了我的第一个软件包。

我在我的package.json中添加了“ eveonlinejs”:“ ^ 2.0.0”并运行了“ 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”属性。

我尝试删除清除NPM缓存并重新安装node_modules文件夹。

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

更新:

多亏了@ nem035,我已经有了一些进一步的工作,并停止使用import,但是发现使用require时遇到了404错误。

通过添加以下代码,我可以走得更远:

systemjs.config.js

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


这让我回到了“萨克斯”的错误上。我发现由于某种原因,Sax已从eveonlinejs文件夹移至根node_modules文件夹。

'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版本,则可能无法运行,具体取决于您如何编译模块(以及该过程如何处理module.exports)。

安全的方法是只使用require:

var eveonlinejs = require('eveonlinejs');

10-06 12:25