获取ReferenceError试图评估我认为有效的ES6。为什么?

时间:2017-03-08 21:25:08

标签: javascript compiler-errors compilation ecmascript-6

我正在尝试评估具有以下内容的js文件:

let typeCache = {};
export function type(label = '') {
    if (typeCache[label]) {
        throw new Error(`Action type "${label}" is not unique"`);
    }
    typeCache[label] = true;
    return label;
}

这是整个文件。没有进口,没什么太花哨的。但我收到的错误是ReferenceError: label is not defined。这很奇怪,因为标签似乎定义得很好。

这里有人能发现任何错误吗?

UPDATE :此文件(以及许多其他文件)是从Typescript生成的,并发送到gulp-template以便可以替换变量等等。这是代码被唤醒的时候。这是我得到的完整堆栈跟踪:

ReferenceError: label is not defined at eval (lodash.templateSources[80]:9:10) at DestroyableTransform._transform (C:\Work\School\Frontend\node_modules\gulp-template\index.js:24:40) at DestroyableTransform.Transform._read (C:\Work\School\Frontend\node_modules\readable-stream\lib\_stream_transform.js:159:10) at DestroyableTransform.Readable.read (C:\Work\School\Frontend\node_modules\readable-stream\lib\_stream_readable.js:365:10) at flow (C:\Work\School\Frontend\node_modules\readable-stream\lib\_stream_readable.js:739:34) at DestroyableTransform.<anonymous> (C:\Work\School\Frontend\node_modules\readable-stream\lib\_stream_readable.js:610:7) at emitNone (events.js:86:13) at DestroyableTransform.emit (events.js:185:7) at onwriteDrain (C:\Work\School\Frontend\node_modules\gulp\node_modules\readable-stream\lib\_stream_writable.js:300:12) at afterWrite (C:\Work\School\Frontend\node_modules\gulp\node_modules\readable-stream\lib\_stream_writable.js:288:5) at onwrite (C:\Work\School\Frontend\node_modules\gulp\node_modules\readable-stream\lib\_stream_writable.js:281:7)

谢谢!

1 个答案:

答案 0 :(得分:1)

哦,我发现了这个问题。

上面的代码被发送到gulp-template,后者使用Lodash的模板函数,后者又试图替换函数中的$ {label} ...导致错误,因为这不是当时定义的。

所以,请注意我的gulp-template朋友。

我通过禁用gulp-template的ES6插值并仅保留ERB样式插值(例如&lt;%blah%&gt;)来解决我的问题。我通过提供选项对​​象和模板来做到这一点,如下所示:

.pipe(plugins.template(templateToReplace, { interpolate: /<%=([\s\S]+?)%>/g }))