导入自定义CommonJS模块失败

时间:2019-11-22 09:31:39

标签: javascript node.js

我通过以下方式在项目A中创建了CommonJS模块:

const { WebElement } = require('selenium-webdriver');
const { By } = require('selenium-webdriver');

class VlElement extends WebElement {
    constructor(driver, selector) {
        ...
    }

    async getClassList() {
        ...
    }
}

module.exports = VlElement;

在项目B中,我使用以下代码:

const VlElement = require('projectA');

class VlButton extends VlElement {  
    constructor(driver, selector) {
        super(driver, selector);
    }
    ...
}

module.exports = VlButton;

运行代码时,找不到VLElemlent。 它位于我的package.json中,并且可以在projectB > node_modules > projectA下看到VLElement。 我的出口出了什么问题?

先谢谢了。 问候

1 个答案:

答案 0 :(得分:1)

确保您的projectB/mode_modules/package.jsonmain指向定义/导出VlElement的文件,如下所示:

  "main": "path/to/file/with/VlElement.js",

调用require('projectA');时,必须将其解析为projectA中的文件,以便可以对其进行评估以(并返回)该文件的导出。 main中的package.json条目允许这样做(但默认为index.js,因此,如果您使用的是package.json,则可能不需要,但是应该拥有它无论如何)。

您可以具有多个具有不同导出功能的文件,但是请记住require('projectA');仍然只能返回一件事,因此通常的做法是使用一个index.js,其外观类似于:

module.exports = {
    'something': require('./something.js'),
    'otherthing': require('./otherthing.js'),
    'etc': require('./etc.js'),
};