2013-12-25 4 views
7

Я хотел бы использовать moment.js в моем приложении узла, так что я установил moment.js с помощью менеджера пакетов НПМ узла:машинопись не рассосется внешний модуль (Node.js)

npm install [email protected] 

Просто быть на всяком случае, я проверил момент не установлен глобально и установленная версия действительно версия 2.4.0 (версия 2.4.0, чтобы использовать файл правильного d.ts ...)

require("moment").version 

Хорошо, кажется хорошим. Я также использую последнюю версию TypeScript (0.9.5).

Итак, теперь я добавил следующий файл в моей корневых проектах директории https://github.com/borisyankov/DefinitelyTyped/blob/master/moment/moment.d.ts и refernced файл:

/// <reference path="moment.d.ts" /> 

Теперь он должен работать, чтобы импортировать момент использования машинописного импорта ключевого слова:

import m = require("moment"); 

Компиляция с помощью следующей команды

tsc app.ts --module commonjs 

produkt КЕС следующие ошибки

/home/unknown/temp/test/app.ts(3,1): ошибка TS2071: Не удается решить проблему внешнего модуля ' "момент"'. /home/unknown/temp/test/app.ts(3,1): ошибка TS2072: Модуль не может быть псевдонимом для немодульного типа.

Зачем возникает эта ошибка? Как это исправить?

+1

Файл moment.d.ts записывается в предположении, что вы загрузили его с помощью тега сценария, а не для вызова вызова. Вам нужно будет отредактировать файл .d.ts, чтобы он выглядел как внешний модуль (для определения того, как это сделать, должны быть какие-то другие примеры на DefinitelyTyped). –

ответ

6

Важная строка в файле d.ts это один ...

declare var moment: MomentStatic; 

Он просто объявляет переменную для момента.

Вы можете добавить следующую строку, чтобы решить вашу проблему:

export = moment; 

Это должно сделать это загружаемый с помощью оператора импорта у вас есть.

Если вы сделаете это - вам не понадобится эталонный комментарий.

+2

Я вижу ... Я добавил следующие строки в конце момента. D.ts-файл объявляет var moment: MomentStatic; объявить модуль «момент» { export = moment; } и он работает! Благодаря! –

+0

У меня есть аналогичная проблема, но с модулем, написанным в TypScript (который, как я думал, не нуждается в файле определения). У вас была такая проблема? Лучше описано здесь: https://stackoverflow.com/questions/23175152/do-modules-written-in-typescript-need-a-definition-file-for-import – conradkdotcom

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