因包名中的连字符而导致混淆的TypeScript错误?

时间:2017-03-09 02:20:37

标签: javascript typescript npm umd

我已经构建了一个我想要工作的JavaScript / TypeScript库:

  • 从JavaScript和TypeScript调用时的全局变量
  • 从JavaScript和TypeScript调用时通过RequireJS访问
  • 具有完整的单元测试覆盖率

这是一个使用Webpack打包并在此部署为NPM包的UMD(https://www.npmjs.com/~typed-contract)。如果你想要我正在处理的分支的整个来源,你可以在https://github.com/randarp/typed-contract/tree/feature/Issue_5.1找到它。

我的问题是我无法在所有场景中使用它,我的感觉是包名称中的连字符(即打字合同)是罪魁祸首。一些例子:

  • 在TypeScript中,\ Code \ TypedContract.Specs \ Contract.TypeScript.requireJS.spec.ts
    • 如果我从“typed-contract”使用 import {contract},那么我的单元测试失败,但WebStorm转换器说它是正确的。
    • 如果我从“typedcontract”使用 import {contract},那么我的单元测试通过,但是转换器说错误:(4,26)TS2306:文件'C:/ Projects / TypedContract / Code /typedcontract.d.ts'不是模块。
  • 我有一个外部NodeJS应用程序来测试它。在这种情况下:
    • 如果我从'typed-contract'使用 import {contract},它会按预期工作
    • 如果我从'typedcontract'使用 import {contract},它将无法加载应用程序,因为它无法在node_modules下找到NPM包。

我开始认为我需要弃用这个包并开始一个没有连字符的新包,除非有人可以提供一些关于可能发生的事情的线索,因为我的“通过排列编程”不起作用。

2 个答案:

答案 0 :(得分:0)

  

我开始认为我需要弃用此软件包并开始一个没有连字符的新软件包

  • 我应该使用word.lower()
  • 不要太信任WebStorm。 TSC应该是您唯一的事实来源。
  

然后我的单元测试失败

也许你的单元测试是错误的。

答案 1 :(得分:0)

好吧,经过几次尝试失败之后,我创建了一个新软件包并弃用了旧软件包。它现在可以在:

找到

Please read the cellfun documentation of MATLAB

我无法使用连字符在所有情况下都能使用它,所以这似乎是最好的长期解决方案。