使用import {}

时间:2017-11-16 17:48:36

标签: typescript jasmine resharper

设定:

  • Visual Studio 2017
  • 整形器(2017年2月2日)
  • 打字稿(2.6.1)
  • 茉莉花(2.7.0)

问题:

  • 浏览器向网络测试启动器显示消息“未找到规格”
  • 控制台错误可见:未捕获的ReferenceError:在referenceFile:2
  • 中未定义导出
  • 未捕获的ReferenceError:未在Tests.js:2
  • 中定义导出

其他信息:

从开发工具中,如果我点击referenceFile:2我可以看到该文件的源JS代码,包含以下内容:

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var User = (function () {
    function User(name, surname) {
        this._name = name;
        this._surname = surname;
    }
    Object.defineProperty(User.prototype, "Name", {
        get: function () {
            return this._name;
        },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(User.prototype, "Surname", {
        get: function () {
            return this._surname;
        },
        enumerable: true,
        configurable: true
    });
    return User;
}());
exports.User = User;
//# sourceMappingURL=User.js.map

tsconfig.json

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "lib": ["es5"],
    "sourceMap": true
  },
  "exclude": [
    "node_modules"
  ]
}

的package.json

{
  "name": "nodejs-console-app",
  "version": "0.0.0",
  "description": "NodejsConsoleApp",
  "main": "app.js",
  "author": {
    "name": "ms"
  },
  "devDependencies": {
    "@types/node": "^6.0.87",
    "jasmine": "^2.8.0"
  },
  "dependencies": {
    "@types/jasmine": "^2.8.2"
  }
}

关于如何解决问题的任何想法?

更新: 该问题是由tsconfig.json中指定的commonJs模块类型引起的。 这是许多模板提出的默认值,也是我最常用的模板。 遗憾的是,CommonJS无法立即在浏览器中执行,需要打包/浏览才能在浏览器中执行。 对于源代码,我使用Gulp> browserify,一切正常。

我的期望是让resharper为我做肮脏的工作,但事实并非如此。 如何使用resharper运行那些没有错误的测试,在我的情况下我甚至不需要打开浏览器就可以在节点中运行。

1 个答案:

答案 0 :(得分:0)

TypeScript模块编译确实很重要,我使用的是CommonJS,但浏览器不支持此操作,而R#对此没有任何帮助。

在tsconfig.json> compilerOptions>模块,您可以指定以下选项之一:commonjs,amd,system,umd,es6。

使用R#,你可以而且应该使用 es6

有关此内容的更多信息: Typescript Modules Typescript Module Resolution