相关疑难解决方法(0)

Typescript 和子路径导入

我正在尝试让 Node 子路径导入和打字稿正常工作。我的 IDE 在解析导入时没有问题,但 Typescript 从来不高兴。

包含代码的 Github 存储库:https://github.com/doronrosenberg/ts-subpath-imports

包.json:

  "imports": {
    "#internal/*": "./internal/*.ts",
    "#internal2": "./internal"
  }
Run Code Online (Sandbox Code Playgroud)

tsconfig.json:

  "paths": {
    "#internal/*": "./internal/*.ts",
    "#internal2": ["./internal"]
  }
Run Code Online (Sandbox Code Playgroud)

和代码:

import { foo } from "#internal/index";
import { bar } from "#internal2";
Run Code Online (Sandbox Code Playgroud)

无论我如何设置,我总是得到:

src/test.ts:1:21 - error TS2307: Cannot find module '#internal/index' or its corresponding type declarations.

1 import { foo } from "#internal/index";
                      ~~~~~~~~~~~~~~~~~

src/test.ts:2:21 - error TS2307: Cannot find module '#internal2' or its corresponding type declarations.

2 import { bar …
Run Code Online (Sandbox Code Playgroud)

node.js typescript

10
推荐指数
2
解决办法
3963
查看次数

如何使用 TypeScript 正确使用 package.json 上的导出和子路径?

这是我第一次尝试使用 TypeScript 创建 npm 包,并且遇到了一些麻烦,可能是因为我误解了文档中的某些内容。\n在撰写本文时,我正在使用 Node 16.16.0 和 npm 8.13.2这。

\n

首先,我的项目结构如下所示。

\n
src/\n\xe2\x94\x9c\xe2\x94\x80 module1/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 index.ts\n\xe2\x94\x9c\xe2\x94\x80 module2/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 index.ts\npackage.json\ntsconfig.json\n
Run Code Online (Sandbox Code Playgroud)\n

tsconfig.json

\n
{\n  "compilerOptions": {\n    "target": "es2017",\n    "module": "commonjs",\n    "esModuleInterop": true,\n    "declaration": true,\n    "outDir": "./lib",\n    "strict": true\n  },\n  "include": ["src"],\n  "exclude": ["node_modules", "**/__tests__/*"]\n}\n
Run Code Online (Sandbox Code Playgroud)\n

包.json

\n
{\n  "name": "@owner/mypackage",\n  "version": "v1.0.0",\n  ...\n  "files": [\n    "lib/**/*"\n  ],\n  "type": "module",\n  "exports": {\n    "./module1": "./lib/module1/index.js",\n    "./module2": "./lib/module2/index.js",\n    "./package.json": "./package.json"\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

问题是,当发布模块时,它会生成以下结构:

\n
lib/\n\xe2\x94\x9c\xe2\x94\x80 module1/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 index.js\n\xe2\x94\x9c\xe2\x94\x80 module2/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 index.js\npackage.json\n
Run Code Online (Sandbox Code Playgroud)\n

留给我以下导入结构: …

javascript npm typescript package.json

6
推荐指数
1
解决办法
2689
查看次数

编写一个带有导入子路径打字稿选项的包

我编写了一个包(我们称之为它)commons和另一个导入它的项目。
我不想导入整个包,而只想导入该包的一个子路径。
import { client } from '@commons/clients'相反,import { client } from '@commons'

我看到了诸如jose之类的打字稿包可以实现这种行为。
例如import createRemoteJWKSet from 'jose/jwks/remote'

经过一番研究,我确实发现我可以package.json用 key 来定义这种行为exportsjs不幸的是,据我测试,这似乎只适用于纯文本,不适用于打字稿。另外,我发现打字稿exports在某些线程中尚不支持。像这样的包如何jose管理这个?

package typescript jose

4
推荐指数
1
解决办法
1117
查看次数

标签 统计

typescript ×3

javascript ×1

jose ×1

node.js ×1

npm ×1

package ×1

package.json ×1