2016-11-22 2 views
2

Только что прошел Tour of Heroes учебник для Angular2 и действительно наслаждался системой 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 "и увидите установленное свойство" main ".

Я попытался удалить очистку кеша NPM и переустановить папку node_modules.

Я также попытался использовать инструкцию require, чтобы указать в каталог, но затем я получаю отсутствующий модуль для «sax», который установлен в каталоге «eveonlinejs».

Update:

Благодаря @ nem035 я получил немного futher и перестали использовать импорт однако обнаружил, что я получаю ошибку 404 при использовании требуют.

я смог сделать шаг вперед, добавив следующий код:

systemjs.config.js

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

Что у меня к тому, ошибки с «саксофона». Я обнаружил, что Sax по какой-то причине вышел из папки eveonlinejs до корневой папки node_modules.

'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) 

Каждый из них я фиксирую показывает another‽ Если это то, что 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, это может не работать в зависимости от того, как вы transpiling ваших модулей (и как этот процесс имеет дело с module.exports).

безопасный способ будет просто использовать потребуется:

var eveonlinejs = require('eveonlinejs'); 
+0

Спасибо за пояснения на кронштейнах, но я до сих пор не в состоянии заставить его работать. Пробовал без скобок, а затем попытался использовать метод «require». С требованием я получаю '(404 Not Found) loading http: // localhost: 3000/eveonlinejs' Что мне кажется очень странным. –

+0

Добро пожаловать, друг, рад помочь, если смогу. Основываясь на том, что вы сказали, работает подход 'require', теперь у вас есть вторая проблема, которая заключается в том, что сервер не обрабатывает маршрут'/evenonlinejs'. – nem035

+0

Кажется, вы ответили на мой вопрос: «Вы не можете делать то, что вы пытаетесь сделать». Это надежный ответ, но я не могу найти ничего о том, что делать с «requirejs 404 error». У меня, честно говоря, было 404 часов назад, и он уехал на грузовик, потому что «это не может быть прав!» –

Смежные вопросы