TypeScript:意外的保留字

时间:2016-03-02 01:12:14

标签: node.js typescript webstorm

我在WebStorm IDE& Node.js的我创建了一个名为" mongo-manager.ts"的文件。我在routes \ index.js文件中使用过。它无缝地工作。

然后我做了两件事:

  1. WebStorm总是问我是否要将TypeScript编译为JavaScript而我一直忽略它,但是一旦我点击了"是"从那以后,在解决了一些错误后,它现在将ts文件成功编译为js。
  2. 我将index.js转换为index.ts,现在我还有index.js,它是编译的输出。
  3. 从那时起,当我尝试运行我的应用程序时(使用WebStorm中的三角形绿色按钮,后者又使用命令行:" C:\ Program Files(x86)\ JetBrains \ WebStorm 11.0.1 \ bin \ runnerw.exe"" C:\ Program Files \ nodejs \ node.exe" bin \ www),我收到此错误:

      

    import mongodb = require(' mongodb');

         

    ^^^^^^

         

    SyntaxError:意外的保留字

    现在," import"没有具体问题。声明,因为如果我省略它,下一个非JavaScript语句将抛出相同的异常。它只是尝试将TypeScript视为JavaScript。

    我发现了以下问题: Typescript: unexpected reserved word in PHPStormUnable to import in typescript file in nodejs

    他们建议使用" tsc"而不是node.exe,或者确保我使用node.exe运行js文件而不是ts文件。

    现在问题是node.exe直接运行的文件是" www"这是一个JavaScript文件,然后调用仍然是JavaScript的app.js,但后来调用了文件index.ts和mongo-manager.ts,所以我有js和ts的混合。

    另一个也是最重要的一点是,我的代码已经无缝地工作,即使它是混合的,也没有在这些问题中采取任何建议,直到我回答了WebStorm"是"关于是否将TypeScript编译为JavaScript的问题,该问题始终出现。

    无论如何,我只希望我的应用再次运作,无论如何。

    任何帮助都将深表感谢!

1 个答案:

答案 0 :(得分:1)

您需要了解编译错误运行时错误之间的区别。您遇到的似乎是运行时错误。请查看Node.js正在执行的JavaScript文件。

目前,Node.js尚不支持ES6模块语法,您需要将module中的tsconfig.json字段设为commonjs。理想情况下,在您的输出JavaScript文件中,import mongodb = require('mongodb');在定位ES6时应以const mongodb = require('mongodb');发出,在定位ES5时应var mongodb = require('mongodb');