刚经历了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');