【问题标题】:Typescript complaining about namespace打字稿抱怨命名空间
【发布时间】:2016-10-14 15:30:10
【问题描述】:

我正在使用节点 v6.8.0、TypeScript v2.0.3、gulp v3.9.1 和 gulp-typescript v3.0.2。当我使用 gulp 构建时出现错误。

这是我的代码

/// <reference path="../_all.d.ts" />
'use strict';

import * as Pool from '~mysql/lib/Pool';
import * as mysql from 'mysql';
import * as conf from '../config/config';

class DbConnection {
    public pool: Pool;

    public static bootstrap(): DbConnection {
        return new DbConnection();
    }

    constructor() {
        const setting: conf.Setting = (new conf.Config()).config();
        this.pool = mysql.createPool({
            connectionLimit: 10,
            host: setting.infiniDbHost,
            user: setting.infiniDbUser,
            password: setting.infiniDbPassword,
            debug: false
       });
   }
}

const dbConnection: DbConnection = DbConnection.bootstrap();
export default dbConnection.pool;

这是我得到的错误:

[11:21:07] Using gulpfile ~/Repos/git/WdAnalytics/gulpfile.js
[11:21:07] Starting 'clean'...
[11:21:07] Finished 'clean' after 21 ms
[11:21:07] Starting 'default'...
src/data/infiniDbConnection.ts(28,16): error TS2503: Cannot find namespace 'dbConnection'.
[11:21:08] TypeScript: 1 semantic error
[11:21:08] TypeScript: 2 emit errors
[11:21:08] TypeScript: emit failed
[11:21:08] Finished 'default' after 1.38 s

这是我的 gulpfile.js

var gulp = require('gulp');
var ts = require('gulp-typescript');
var clean = require('gulp-clean');

var src = ['src/**/*.ts', '!src/_all.d.ts'];

gulp.task('default', ['clean'], function() {
    return gulp.src(src)
       .pipe(ts({
           noImplicitAny: true,
           noEmitOnError: true
       }))
       .pipe(gulp.dest('dist/.'))
    ;
});

gulp.task('clean', function() {
    return gulp.src('dist/.', {read: false})
        .pipe(clean())
    ;
});

我不明白为什么它认为 dbConnection 是一个命名空间,而它显然是一个对象。

【问题讨论】:

    标签: javascript node.js typescript gulp


    【解决方案1】:

    我将noEmitOnError: true 更改为noEmitOnError: false,它仍然告诉我存在语义错误,但它可以正常构建和运行。

    【讨论】:

    • 这是一种不好的做法。 noEmitOnError 只是让它不管错误如何仍然构建。 TypeScript 的重点是,如果遇到静态类型问题,就无法构建代码。
    猜你喜欢
    • 2018-10-14
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2019-05-23
    • 2019-10-13
    • 1970-01-01
    • 2021-02-01
    相关资源
    最近更新 更多