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

cle*_*ter 19 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;
Run Code Online (Sandbox Code Playgroud)

我意识到我可以改变这个......

module.exports.testParamsCreatorUpdater = function (lTestParams, creatorID){
    lTestParams.creator = creatorID;
    return lTestParams;
};
Run Code Online (Sandbox Code Playgroud)

并且prepend module.exports.到每个testParamsCreatorUpdater()调用.

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

nic*_*ick 6

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


leo*_*ncc 5

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

var testParamsCreatorUpdater = ...
Run Code Online (Sandbox Code Playgroud)

module.exports.testParamsCreatorUpdater = ...
Run Code Online (Sandbox Code Playgroud)

因为名字是一样的。当我尝试这个时,我在 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) {
    }
}
Run Code Online (Sandbox Code Playgroud)

所以 TypeScript 不喜欢我导入了一个名为Audit的模块并导出了一个也称为Audit的类。


小智 0

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

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