由于包名称中的连字符导致混淆 TypeScript 错误?
Confusing TypeScript errors due to hyphen in package name?
我已经构建了一个 JavaScript/TypeScript 库,我想将其用作:
- 从 JavaScript 和 TypeScript
调用时的全局变量
- 从 JavaScript 和 TypeScript
调用时通过 RequireJS 访问
- 具有完整的单元测试覆盖率
这是一个使用Webpack打包的UMD,在这里作为NPM包部署(https://www.npmjs.com/~typed-contract). If you want the whole source of the branch I'm working on, you can find it here https://github.com/randarp/typed-contract/tree/feature/Issue_5.1.
我的问题是我无法让它在所有情况下都能正常工作,我的感觉是包名称中的连字符(即 typed-contract)是罪魁祸首。一些例子:
- 在 TypeScript 中,\Code\TypedContract.Specs\Contract.TypeScript.requireJS.spec.ts
- 如果我使用 import { contract } from "typed-contract" 那么我的单元测试失败了,但是 WebStorm 转译器说它是正确的。
- 如果我使用 import { contract } from "typedcontract" 那么我的单元测试通过了,但是编译器显示错误:(4, 26) TS2306:File 'C:/Projects/TypedContract/Code/typedcontract.d.ts' 不是模块。
- 我有一个外部 NodeJS 应用程序来测试它。在这种情况下:
- 如果我使用 从 'typed-contract' 导入 {contract} 它会按预期工作
- 如果我使用 import {contract} from 'typedcontract' 它不会加载应用程序,因为它找不到 node_modules 下的 NPM 包.
我开始认为我需要弃用这个包并开始一个没有连字符的新包,除非有人可以提供一些线索来说明可能发生了什么,因为我的 "programming by permutation" 不工作。
I'm starting to think I need to deprecate this package and start a new one without a hyphen
- 我应该和
-
一起工作。
- 不要太相信WebStorm。 TSC 应该是您唯一的真实来源。
then my unit tests fail
也许你的单元测试是错误的。
好吧,在几次失败的尝试之后,我创建了一个新包并弃用了旧包。现在可以在以下位置找到它:
https://www.npmjs.com/package/typedcontract.
我只是无法让它在所有使用连字符的情况下工作,所以这似乎是最好的长期解决方案。
我已经构建了一个 JavaScript/TypeScript 库,我想将其用作:
- 从 JavaScript 和 TypeScript 调用时的全局变量
- 从 JavaScript 和 TypeScript 调用时通过 RequireJS 访问
- 具有完整的单元测试覆盖率
这是一个使用Webpack打包的UMD,在这里作为NPM包部署(https://www.npmjs.com/~typed-contract). If you want the whole source of the branch I'm working on, you can find it here https://github.com/randarp/typed-contract/tree/feature/Issue_5.1.
我的问题是我无法让它在所有情况下都能正常工作,我的感觉是包名称中的连字符(即 typed-contract)是罪魁祸首。一些例子:
- 在 TypeScript 中,\Code\TypedContract.Specs\Contract.TypeScript.requireJS.spec.ts
- 如果我使用 import { contract } from "typed-contract" 那么我的单元测试失败了,但是 WebStorm 转译器说它是正确的。
- 如果我使用 import { contract } from "typedcontract" 那么我的单元测试通过了,但是编译器显示错误:(4, 26) TS2306:File 'C:/Projects/TypedContract/Code/typedcontract.d.ts' 不是模块。
- 我有一个外部 NodeJS 应用程序来测试它。在这种情况下:
- 如果我使用 从 'typed-contract' 导入 {contract} 它会按预期工作
- 如果我使用 import {contract} from 'typedcontract' 它不会加载应用程序,因为它找不到 node_modules 下的 NPM 包.
我开始认为我需要弃用这个包并开始一个没有连字符的新包,除非有人可以提供一些线索来说明可能发生了什么,因为我的 "programming by permutation" 不工作。
I'm starting to think I need to deprecate this package and start a new one without a hyphen
- 我应该和
-
一起工作。 - 不要太相信WebStorm。 TSC 应该是您唯一的真实来源。
then my unit tests fail
也许你的单元测试是错误的。
好吧,在几次失败的尝试之后,我创建了一个新包并弃用了旧包。现在可以在以下位置找到它:
https://www.npmjs.com/package/typedcontract.
我只是无法让它在所有使用连字符的情况下工作,所以这似乎是最好的长期解决方案。