Javascript 导出函数时,在VSCode中:;个别申报必须全部出口或全部本地;

Javascript 导出函数时,在VSCode中:;个别申报必须全部出口或全部本地;,javascript,node.js,visual-studio-code,Javascript,Node.js,Visual Studio Code,我最近升级到Visual Studio代码0.5.0,出现了一些以前没有的新错误 我有一堆函数,它们在本地声明,然后导出。但是,由于升级,将鼠标悬停在每个本地函数名上会产生错误合并声明functionName中的单个声明必须全部导出或全部本地。 这是一个导出的本地函数示例 var testParamsCreatorUpdater = function (lTestParams, creatorID){ lTestParams.creator = creatorID; return

我最近升级到Visual Studio代码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对象中的所有内容都可用于任何需要的对象

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


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

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

var 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的类。

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

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

对此有任何更新吗?我在VS2017更新3中也遇到了这个错误,它是一个声明了3个接口的模块。这不是VScode问题。您的TS编译器将给您相同的错误。这是以前的开发人员正在做的事情,现在也是这样做的
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) {
    }
}