javascript - 这种情况的正确语法是什么?

标签 javascript webstorm

我对 JS 很困惑。我写了一个 Stack 的伪实现,保存在它自己的文件中。我想在单独的文件中“创建”一个 Stack 对象,但是 WebStorm 告诉我语法错误。请参阅以下错误:

import Stack from "./Stack"
       ^^^^^

SyntaxError: Unexpected identifier
    at Module._compile (internal/modules/cjs/loader.js:718:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:785:10)
    at Module.load (internal/modules/cjs/loader.js:641:32)
    at Function.Module._load (internal/modules/cjs/loader.js:556:12)
    at Function.Module.runMain (internal/modules/cjs/loader.js:837:10)
    at internal/main/run_main_module.js:17:11

根据其他用户最近的建议,这是我在测试文件中调用导入的方式:

// Stack.js
class Stack {
    ....
}
export default Stack

// StackTester.js driver file
import Stack from "./Stack"
    ....

最佳答案

请检查您的 node.js 版本。 node.js 8.5.0+ 支持 import 语法(作为实验性 特性)。要使用此功能,您需要:

  1. 如果您使用的是旧版本的 Node.js,则需要对其进行升级。

    WebStorm 使用的 node.js 解释器可以在 Setting -> Language & Frameworks -> Node.js and NPM 中找到,您可能会根据目录路径找到版本(例如,在我的例子中是 8.12.0),或者基于类似于 node -v

    的命令

    enter image description here

  2. 将所有 *.js 文件重命名为 *.mjs。例如将 stack.js 重命名为 stack.mjs

  3. 使用--experimental-modules 命令行参数运行您的mjs 文件。如果你使用命令行,你应该使用类似于 node --experimental-modules main.mjs 的东西。如果使用webstorm,可以通过webstorm命令行参数进行配置(如截图所示)

    enter image description here enter image description here

但是,import/export 语句并不是在 node.js 中进行模块化开发的最佳方式。它主要用于使用 webpack 进行前端 Web 开发。通常在node.js中,我们使用requiremodule.export,应该是类似于

的东西
// In stack.js
class Stack {

}
module.export = {Stack}

// In main.js
const {Stack} = require('./stack.js')

此外,如果它在编辑器中显示警告消息,您可能需要在 Webstorm 中启用 ES6 语法。

Setting -> Language & Frameworks -> JavaScript,在JavaScript Language Version下拉列表中,选择ECMAScript 6

enter image description here

关于javascript - 这种情况的正确语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56249827/

相关文章:

vue.js - 如何比通过 const 更明确地声明变量?

javascript - 如何在 WebStorm 的 JSHint 的另一个文件中设置已定义变量的范围?

c# - 上一个按钮显示验证

javascript - 让scrollTop始终检查

javascript - 如何将 bootstrap 下拉菜单中的值发送到 php

jquery - Webstorm 本地主机调试

javascript - jquery 点击图像放大和缩小

java - 语法错误: missing ) after argument list while reading csv file and alerting in js

webstorm - 有没有办法让 WebStorm 自动完成标签属性值?

javascript - 在 WebStorm 上的每个文件键上触发 React-native 热重载