打字稿找不到本地es6模块; 错误TS2307:找不到模块

雷恩·里维尔(Raine Revere)

我很难输入打字稿来识别本地es6模块的形状:

convert-time.js

export const minutes = sec => sec * 60
export const hours = sec => minutes(sec) * 60
export const days = sec => hours(sec) * 24
export const weeks = sec => days(sec) * 24
export const years = sec => days(sec) * 365

注意:我想弄清楚如何在不更改convert-time.js为打字稿文件的情况下使它起作用

这是我要导入的文件:

索引

/// <reference path="../typings/convert-time.d.ts" />

import { minutes, days } from '../test/helpers/convert-time'

这是我创建的类型定义文件:

convert-time.d.ts:

declare module "convert-time" {
  export function minutes(sec: number): number;
  export function hours(sec: number): number;
  export function days(sec: number): number;
  export function weeks(sec: number): number;
  export function years(sec: number): number;
}

这是我的tsconfig:

tsconfig.json

{
  "compilerOptions": {
    "module": "commonjs",
    "noImplicitAny": false,
    "removeComments": true,
    "preserveConstEnums": true,
    "sourceMap": true,
    "jsx": "react"
  },
  "files": [
    "typings/index.d.ts",
    "typings/convert-time.d.ts"
  ],
  "exclude": [
    "node_modules"
  ]
}

尝试的步骤:

以上都不起作用!我必须学习什么黑魔法才能使它起作用?谢谢!

伊凡·兹拉捷夫(Ivan Zlatev)

关于ES6

由于您尝试与ES6模块进行互操作,因此您要么

a)更改tsconfig.json为目标ES6并发出ES6模块,如下所示:

{
  ...
  "target": "es6",
  "module": "es6",
  ...
}

但是我认为您还不能在NodeJS中使用ES6模块。

要么:

B)设打字稿transpile的ES6的JavaScript模块向下到ES5通过启用JavaScript处理您的tsconfig.jsoncompilerOptions-如下面,并确保该.js文件包含/不排除:

{
  ...
  "target": "es5",
  "module": "commonjs",
  "allowJs": true,
  ...
}

关于类型声明

在我的博客上阅读有关TypeScript如何发现类型/类型声明以及希望在此处看到的内容的信息:https : //ivanz.com/2016/06/07/how-does-typescript-discover-type-declarations-definitions- javascript

看来此JavaScript文件是您自己的代码(不是NPM模块),因此:

  1. 你并不需要/// <reference path="../typings/convert-time.d.ts" />,只要该文件不排除或纳入tsconfig.json
  2. 确保convert-time.d.ts与以下目录位于同一目录中convert-time.js
  3. 您无需声明模块,因此删除该declare module "convert-time" {位。这是因为通过在.js旁边放置.d.ts,它是一个“外部”模块,而不是“环境”模块(请参见我的博客)(declare例如,如果您正在创建的代码类型属于您自己的代码,则需要使用此代码)对于NPM软件包)

基本上:

../test/helpers/convert-time.js:

export const minutes = sec => sec * 60
export const hours = sec => minutes(sec) * 60
export const days = sec => hours(sec) * 24
export const weeks = sec => days(sec) * 24
export const years = sec => days(sec) * 365

../test/helpers/convert-time.ts.d:

export function minutes(sec: number): number;
export function hours(sec: number): number;
export function days(sec: number): number;
export function weeks(sec: number): number;
export function years(sec: number): number;

index.ts:

import { minutes, days } from '../test/helpers/convert-time';

tsconfig.json(用于ES5转换)

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "allowJs": true,
    "noImplicitAny": false,
    "removeComments": true,
    "preserveConstEnums": true,
    "sourceMap": true,
    "jsx": "react"
  },
  "files": [
    "/test/helpers/convert-time.ts.d",
    "/test/helpers/convert-time.js",
    "index.ts"
  ]
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

错误TS2307:找不到模块'./product'

错误TS2307:找不到模块'@ angular / core'

错误TS2307:找不到模块“反应”

TS2307:找不到模块“角度”

TS2307:找不到模块“表达”

错误:找不到模块“ nexmo”和错误TS2307:找不到模块nexmo

带有 ES6 模块、Typescript 和 Winston 的 node.js:“错误 TS2307:找不到模块‘winston’”

tsc抛出“ TS2307:找不到本地文件的模块”

index.d.ts错误TS2307:找不到模块我自己的模块

错误TS2307:在moment-date-adapter.d.ts中找不到模块“ moment”

TS2307:找不到模块'〜express / lib / express'

在React中找不到模块TS2307

TS2307:找不到模块“离子/离子”

Typescript React TS2307找不到模块json

TS2307内部版本:找不到模块“ lodash”

运行时错误:错误TS2307:找不到模块'传单'

错误TS2307:找不到模块'@ microsoft / sp-webpart-base'

TypeScript + moment.js:错误TS2307:找不到模块'moment'

角度2:错误TS2307:找不到模块'socket.io-client'

Typescript编译器错误TS2307:找不到模块'jquery'

NRWL NX导入库错误TS2307:找不到模块'@ eduboard / interfaces'

错误TS2307:找不到HttpClientModule的模块'@ angular / common / http'

错误 TS2307:找不到模块“fs”或其相应的类型声明

角度-错误TS2307:找不到模块'ngx-bootstrap / modal'

错误 TS2307:找不到模块“标记”或其相应的类型声明

Angular2 TypeScript - 错误 TS2307:找不到模块“angular2/forms”

Typescript React / NestJS 应用程序失败 @Heroku 构建-“错误 TS2307:找不到模块”

TS2307 错误:找不到模块“../constants”或其相应的类型声明

角度:无法使用ExcelJS导出Excel-错误TS2307:找不到模块“流”-错误TS2503:找不到命名空间“ NodeJS”