刚刚浏览了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的样子那么我就出局了。哈哈!
答案 0 :(得分: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
现在,如果您正在使用当前位于github的eveonlinejs版本,则这可能不起作用,具体取决于您如何转换模块(以及此过程如何处理module.exports
)
安全的方法是使用require:
var eveonlinejs = require('eveonlinejs');