我有两个工作方式不同的项目,我说不出有什么不同.我有一个项目的以下内容...

// In .ts wile
import 'core-js/es6';
import 'reflect-metadata';

这在一个项目上效果很好,但是,在另一个项目上使用相同的tsconfig.json和打字.json以及我得到的网页配置中配置的ts加载器...

未捕获的SyntaxError:意外的令牌导入

失败的那个上的传输JS看起来像这样...

/***/ function(module, exports, __webpack_require__) {

    /* WEBPACK VAR INJECTION */(function(process) {import 'core-js/es6';
    import 'reflect-metadata';

I will post the succeeding project one in a bit

所以我的问题是我错过了什么?typescript定义是否未正确导入?我已经试着再次跑typings install,只是为了排除这种可能性.

More Info

//tsconfig
{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors": true
  }
}

// Typings.json
{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160602141332",
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
    "node": "registry:dt/node#6.0.0+20160621231320"
  }
}

推荐答案

我遇到了一个类似的问题,在ts源文件中使用async\await和Promises(两个ES6构造)使用import关键字来导入其他ts模块.

我可以使用默认的js目标版本(ES5)使用TypeScript进行传输,该版本会产生传输错误,抱怨async\Wait和Promise关键字,但因为我实际运行的是Node 6.4.0.实际上,一切都是在运行时工作的.

在上述情况下,"导入"关键字从ts翻译为js:

var BasePage_1 = require('./BasePage');

所以,我得到了tsc Transfile错误,但 node 在运行时可以使用上面的"导入"转换正常工作.

如果我使用-tswitch 告诉tsc传输到ES6,那么传输文件是干净的,没有错误,但是 node 失败,因为它说它不理解发出的js文件中的"Import"关键字.

现在,tsc发布了以下"导入"的翻译:

从导入{BasePage}from'/BasePage';

因此,上面的翻译实际上根本不是翻译, node 在运行时会被带有"Import"关键字的js文件阻塞.

Summary:

我使用以下命令行解决了这个难题:告诉tsc使用ES6库,但发出正确的模块导入语法:

myTypeScriptSourceFile.ts -t ES6 -m commonjs

现在我得到了一个干净的传输文件, node 没有运行时错误.因为现在'Import'正被正确地翻译成'require'保留字.

更多详情请点击此处:

Typescript相关问答推荐

React Router SR:useLocate()只能在路由组件的上下文中使用

如何根据参数的值缩小函数内的签名范围?

ReturnType此索引方法与点表示法之间的差异

TypScript手册中的never[]参数类型是什么意思?

material 表不渲染任何数据

PrimeNG日历需要找到覆盖默认Enter键行为的方法

为什么在这个例子中,我把缺少的属性添加到对象中时,TypeScrip没有拾取,如何修复?

TypeScrip省略了类型参数,仅当传递另一个前面的类型参数时才采用默认类型

如何在深度嵌套的Reaction路由对象中隐藏父级?

ApexCharts条形图未显示最小值.负值

如何编写在返回函数上分配了属性的类型安全泛型闭包

FatalError:Error TS6046:';--模块分辨率';选项的参数必须是:'; node ';,'; node 16';,'; node

通过泛型函数本身推断受约束的泛型参数的类型脚本问题

我可以使用typeof来强制执行某些字符串吗

为什么在泛型方法中解析此promise 时会出现类型错误?

Typescript,如何在通过属性存在过滤后重新分配类型?

Angular NG8001错误.组件只能在一个页面上工作,而不是在她的页面上工作

使用&reaction测试库&如何使用提供程序包装我的所有测试组件

是否可以将类型参数约束为不具有属性?

元素隐式具有any类型,因为string类型的表达式不能用于索引类型{Categories: Element;管理员:元素; }'