我正面临一个前所未有的问题。 我正在使用由Microsoft Bot Framework提供支持的聊天机器人,因此几周前我已经将项目上传到了Azure,一切正常。
今天,我上传了我的项目的新更新,此版本可在我的计算机上完美运行。但是,当我上传到Azure时,日志将引发此错误
SyntaxError: Unexpected token =
at new Script (vm.js:79:7)
at createScript (vm.js:251:10)
at Object.runInThisContext (vm.js:303:10)
at Module._compile (internal/modules/cjs/loader.js:656:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
at Module.load (internal/modules/cjs/loader.js:598:32)
at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
at Function.Module._load (internal/modules/cjs/loader.js:529:3)
at Module.require (internal/modules/cjs/loader.js:636:17)
at require (internal/modules/cjs/helpers.js:20:18)
Wed Oct 16 2019 08:25:08 GMT+0000 (Greenwich Mean Time): Application has thrown an uncaught exception and is terminated:
此错误由“ userCourses = {}”第2行引发:
class UserProfil {
userCourses = {}
constructor(login, firstname, lastname, lastaccess) {
this.login = login;
this.firstname = firstname;
this.lastname = lastname;
this.lastaccess = lastaccess;
}
}
module.exports.UserProfil = UserProfil
但是似乎在每个字符上都抛出错误,例如“ =({”,所以这不是特别之处……这个项目完全可以在我的电脑上工作,而一天前在AZure上也可以工作,所以我真的不知道什么会造成这个大问题
有人已经面临这个吗?
谢谢! :-)
编辑:搜索后,我发现我的计算机运行Nodejs版本12,并且该声明是Nodejs 12中的新增内容,Azure可能运行的是最新的LTS版本(10),这就是为什么它无法正常运行的原因。我已经在计算机上安装了LTS版本,并且抛出的错误与Azure相同:-)
答案 0 :(得分:1)
在普通JavaScript中,您不能像这样定义类属性。您必须做更多类似的事情:
class UserProfil {
constructor(login, firstname, lastname, lastaccess) {
this.login = login;
this.firstname = firstname;
this.lastname = lastname;
this.lastaccess = lastaccess;
this.userCourses = {};
}
}
module.exports.UserProfil = UserProfil
More information on JavaScript classes here
我不知道为什么它不能在您的bot中本地工作,除非有某种在本地完成的编译在Azure中没有完成。但这绝对不是有效的JavaScript,并且在任何地方都无法使用。