在VSCode中导出函数时:“个别声明必须全部导出或全部导出”

时间:2015-07-08 14:25:24

标签: javascript node.js visual-studio-code

我最近升级到Visual Studio Code 0.5.0,并且出现了一些以前没有的新错误。

我有一堆在本地声明然后导出的函数。但是,由于升级,将鼠标悬停在每个本地函数名称上会产生错误合并声明中的各个声明 functionName 必须全部导出或全部导出。

这是导出的示例本地函数。

var testParamsCreatorUpdater = function (lTestParams, creatorID){
    lTestParams.creator = creatorID;
    return lTestParams;
};
module.exports.testParamsCreatorUpdater = testParamsCreatorUpdater;

我意识到我可以将其改为......

module.exports.testParamsCreatorUpdater = function (lTestParams, creatorID){
    lTestParams.creator = creatorID;
    return lTestParams;
};

并将 module.exports。添加到每个 testParamsCreatorUpdater()调用。

但为什么第一个片段错了呢?据我所知,require()使module.exports对象中的所有内容都可用于所需的任何内容。

4 个答案:

答案 0 :(得分:5)

我在Webstorm中遇到了这个问题,我重新启动它就消失了

答案 1 :(得分:2)

我认为在JavaScript级别它无法区分:

var testParamsCreatorUpdater = ...

module.exports.testParamsCreatorUpdater = ...

因为名字是一样的。当我尝试这个时,我在TypeScript中得到了完全相同的错误(引导我发表这篇文章):

import { AuditService } from '../services/audit.service';
import { Audit } from '../models/audit.model';

@Component({
    selector: 'audit',
    templateUrl: './audit.component.html',
})
export class Audit {
    constructor(private auditService: AuditService) {
    }
}

因此TypeScript不喜欢我导入了一个名为 Audit 的模块并导出了一个名为 Audit 的类。

答案 2 :(得分:1)

我认为它与TypeScript ref的合并声明功能有关。我还没有对Typescript做过详细的研究,但似乎它可以在Typescript文件中包含Javascript。

我猜测在JavaScript中声明testParamsCreatorUpdater的方式被VSCode检测为错误,因为它认为这两个声明无法合并。

答案 3 :(得分:-1)

您正在此文件中导出一个变量,该变量被导入到同一文件模块中(本地)。