Jas*_*els 18 node.js npm typescript
我们的库@ltonetwork/lto是用打字稿编写的。我们用来tsc编译为lib文件夹中的javascript。
该包包含多个子包,这些子包位于包含index.ts 文件的子文件夹中。
当尝试导入子模块时,像这样
import {Transfer} from "@ltonetwork/lto/transactions";
Run Code Online (Sandbox Code Playgroud)
我希望这能起作用,但出现以下错误
test.ts:1:24 - error TS2307: Cannot find module '@ltonetwork/lto/transactions' or its corresponding type declarations.
Run Code Online (Sandbox Code Playgroud)
@ltonetwork/lto 的 package.json 包含
test.ts:1:24 - error TS2307: Cannot find module '@ltonetwork/lto/transactions' or its corresponding type declarations.
Run Code Online (Sandbox Code Playgroud)
tsconfig.json 是
{
"scripts": {
"compile": "tsc -p ./tsconfig.json"
},
"main": "lib",
"exports": {
".": "./lib/index.js",
"./*": "./lib/*/index.js",
"./package.json": "./package.json"
},
"files": [
"lib",
"interfaces.d.ts"
]
}
Run Code Online (Sandbox Code Playgroud)
我尝试显式命名子模块,而不是在 中使用通配符exports,但这没有什么区别。
我做错了什么导致这个导入问题?
编辑:
这与 monorepos 或纱线工作区无关。这是关于在 typescript 4.7.1-rc 中使用exportsnpm 中的字段。此功能不适用于早期版本的打字稿。
有关更多信息,请参阅https://github.com/microsoft/TypeScript/issues/33079
我也尝试过
{
"compilerOptions": {
"alwaysStrict": true,
"baseUrl": "",
"lib": ["es2017.object", "es2015", "es6", "dom"],
"module": "commonjs",
"sourceMap": true,
"declaration": true,
"target": "es6",
"paths": {},
"rootDir": "src",
"outDir": "lib"
},
"include": ["src"]
}
Run Code Online (Sandbox Code Playgroud)
Reb*_*ens 32
确保moduleResolution在使用库中设置为Node16或NodeNext在您的tsconfig.json文件中。
编辑:bundler现在也是一个选项。
| 归档时间: |
|
| 查看次数: |
8103 次 |
| 最近记录: |