TypeScript не может найти модуль js в той же папке

92
9

Я пытаюсь загрузить модуль .js, который находится в той же папке, что и мой .ts файл. У меня есть 4 файла в одной папке:


index.ts


/// <reference path="./node.d.ts" />
/// <reference path="./foo.d.ts" />

import foo = require('./foo.js');


node.d.ts


Скопировано из https://github.com/borisyankov/DefinitelyTyped/blob/master/node/node.d.ts


foo.d.ts


declare module "foo" {
export function hello(): void;
}

foo.js


module.exports = {
hello: function() {
console.log('hello');
}
};

Когда я запускаю tsc index.ts --module commonjs, я получаю следующую ошибку:


index.ts(4,22): error TS2307: Cannot find module './foo.js'.

спросил(а) 2021-01-19T18:04:10+03:00 9 месяцев, 1 неделя назад
1
Решение
102

Так как node.js разрешит foo через относительный путь, а не ищет его в каталоге node_modules, как это было бы с модулем, который вы установили через npm, вам нужно отбросить declare module "foo" в foo.d.ts. Кроме того, в index.ts, добавьте расширение .js при вызове require.


foo.d.ts


export function hello(): void;

index.ts


/// <reference path="./node.d.ts" />
/// <reference path="./foo.d.ts" />

import foo = require('./foo');

ответил(а) 2021-01-19T18:04:10+03:00 9 месяцев, 1 неделя назад
65

Попробуйте использовать запрос без относительного пути


var foo = require('foo');

Подробнее см. статью .

ответил(а) 2021-01-19T18:04:10+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема