【问题标题】:cannot find module chai though it exists in node modules folder尽管它存在于节点模块文件夹中,但找不到模块 chai
【发布时间】:2016-11-12 05:59:27
【问题描述】:

我尝试使用以下命令安装 chai。

 npm install --save-dev chai

然后我使用以下导入运行我的单元测试类。

import {assert} from 'chai';
import {expect} from 'chai';

它会引发以下错误。

test\main\MessageBroker.spec.ts(3,22): error TS2307: Cannot find module 'chai'.
[05:38:45] [Typescript] TypeScript error: test\main\MessageBroker.spec.ts(3,22): error TS2307: Cannot find module 'chai'.
test\main\MessageBroker.spec.ts(4,22): error TS2307: Cannot find module 'chai'.
[05:38:45] [Typescript] TypeScript error: test\main\MessageBroker.spec.ts(4,22): error TS2307: Cannot find module 'chai'

我在这里做错了什么?我也可以在 node_modules 文件夹中看到 chai 文件夹。

当我说 var chai = require('chai');有用!为什么导入不起作用?

【问题讨论】:

    标签: javascript typescript npm chai node-modules


    【解决方案1】:

    我还没有为 chai 安装打字机,也就是说我没有从 DefinitiveTyped 中引用 chai,而是将它安装为节点模块。因此,我不得不在我的打字稿代码中使用 require 语句来调用它。

     var chai = require('chai');
    

    【讨论】:

    • 为什么要在 TypeScript 项目中使用 require,尤其是在为 chai 定义类型时?
    【解决方案2】:

    你可能在后台使用 Babel 之类的东西来转译到 ES5。

    如果是这种情况,它实际上是在 Node 上执行 require,CommonJS 样式。

    如果你像我们在 CommonJS 中做的那样,在路径后面加上./,这样你可能会成功。

    请试一试,希望能解决您的问题:

    import {assert} from './chai';
    import {expect} from './chai';
    

    【讨论】:

    • 我正在使用这个生成器npmjs.com/package/generator-typescript-npm-bower。它的目标是 ES5。但是放 ./ 并没有帮助。它仍然说找不到模块。我无法将目标更改为 ES6。那么还有其他解决方法吗?
    • 如果它以 ES5 为目标,那么我相信你不应该尝试使用语法 import {assert} from 'chai',因为那是 ES6 语法,而不是 ES5。然后我会继续使用var chai = require('chai');,因为这是有效的 ES5 语法。
    猜你喜欢
    • 2017-10-23
    • 2015-04-16
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 2021-08-27
    • 1970-01-01
    • 2022-12-15
    相关资源
    最近更新 更多