WebStorm错误:表达式语句不是赋值或调用

Rob*_*iam 18 javascript node.js webstorm

我正在使用WebStorm,我收到一个我无法理解的错误.Node.js + MongoDB.

var mongoose = require('mongoose');

mongoose.Promise = global.Promise;
mongoose.connect(' mongodb://localhost:27017/TodoApp');

var Todo = mongoose.model('Todo', {
    text: {
        type: String
    },
    completed: {
        type: Boolean
    },
    completedAt: {
        type: Number
    }
});

var newTodo = new Todo({
    text: 'Cook dinner'
});
Run Code Online (Sandbox Code Playgroud)

问题出在这个块中:

newTodo.save().then((doc) => {
    console.log('Saved todo', doc);
}, (e) => {
    console.log('Unable to save todo')
})
Run Code Online (Sandbox Code Playgroud)

PS:代码工作正常.

gau*_*muk 42

您需要将JavaScript语言版本更改为ES6.更改此设置应解决此问题:

将Javscript版本更改为ES6的设置

在某些情况下,您可能需要重新启动IDE才能使更改正确反映.

  • 这个答案是__NOT__正确,因为我的设置设置为Ecmascript 6,但我仍然收到警告. (13认同)
  • gauravmuk 的答案是正确的,请注意您可以从 Webstorm->Preferences 菜单而不是从 File->Default Settings 更改 Javascript。第二个对你当前的项目没有影响 (2认同)
  • 我有 6+,但仍然收到该警告。在 `this.currentExercise = this.availableExercises.find( (exercise:Exercise) => {exercise.id ===exerciseId});` (2认同)

Jua*_*ado 11

问题在于,如果该语句在函数内执行以下任何操作,WebStorm 将显示警告:

  • 调用另一个函数
  • 进行任何类型的分配
  • 返回值
  • (可能还有更多,但这些是我所知道的)

换句话说,WebStorm 认为这些功能是不必要的,并试图帮助您捕获未使用的代码。

例如,这将显示警告:

const arr = [1, 2];
const willShowWarning = arr.map(num => {
    num + 1;
});
Run Code Online (Sandbox Code Playgroud)

添加返回将消除警告:

const arr = [1, 2];
const willNotShowWarning = arr.map(num => {
    return num + 1;
});
Run Code Online (Sandbox Code Playgroud)

答案是不要更改 WebStorm 设置。