WebStorm error: expression statement is not assignment or call

WebStorm error: expression statement is not assignment or call

我正在使用 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'
});

问题出在这个块:

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

P.S.: 代码工作正常。

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

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

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

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

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

例如,这将显示警告:

const arr = [1, 2];
const willShowWarning = arr.map(num => {
    num + 1;
});

添加 return 将消除警告:

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

答案是更改 WebStorm 设置。