我在WebStorm IDE& Node.js的我创建了一个名为" mongo-manager.ts"的文件。我在routes \ index.js文件中使用过。它无缝地工作。
然后我做了两件事:
从那时起,当我尝试运行我的应用程序时(使用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 PHPStorm, Unable 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的问题,该问题始终出现。
无论如何,我只希望我的应用再次运作,无论如何。
任何帮助都将深表感谢!
答案 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');
。