【问题标题】:Importing node.js module - SyntaxError: Unexpected identifier导入 node.js 模块 - SyntaxError: Unexpected identifier
【发布时间】:2019-07-26 22:00:58
【问题描述】:

我正在尝试执行以下导入

import  ResClient from 'resclient';

结果

/home/arran/WebstormProjects/untitled1/app.js:2
import  ResClient from 'resclient';
        ^^^^^^^^^

SyntaxError: Unexpected identifier
    at new Script (vm.js:85:7)
    at createScript (vm.js:266:10)
    at Object.runInThisContext (vm.js:314:10)
    at Module._compile (internal/modules/cjs/loader.js:698:28)
    at Object.Module._extensions..js 
(internal/modules/cjs/loader.js:749:10)
    at Module.load (internal/modules/cjs/loader.js:630:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:570:12)
    at Function.Module._load (internal/modules/cjs/loader.js:562:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:801:12)
  • 模块文档位于here,并在示例中执行完全相同的导入。
  • 我已经全局安装了模块。

    npm list -g | grep resclient
    └─┬ resclient@2.0.2
    
  • 我使用的是以下节点版本

     $node -v
     v11.10.1
    

我看过一些关于这个错误的其他帖子。例如here,但它是一个基于浏览器的问题,使用客户端 javascript 而不是节点。 我是一个节点新手,所以无论多么基本,我都会感激任何指针。

【问题讨论】:

  • @Seblor 我不同意。我看过那个帖子。在版本 8.50 之后,导入仅适用于 node.js。我已将我的版本升级到 11.1,所以这对我来说不再是问题。如果您查看他们正在谈论的错误,那就不同了
  • @ArranDuff 恐怕您只是部分正确,它在 Node 8.5+ 中受支持,但仅在启用 --experimental-modules 标志的情况下启用(链接的答案确实解释了)。因此,您的选择是启用该标志或使用像 Babel 这样的转译器。
  • 好吧,看来我看错了帖子。谢谢大家

标签: node.js


【解决方案1】:

对于节点 12,您可以在 package.json 中添加属性 type

"type": "module"

别忘了运行带有实验模块标志node --experimental-modules youapp.js的节点

【讨论】:

  • "type": "module" 好收获
【解决方案2】:

我也面临同样的问题。这是我修复它的方法。

我首先使用以下命令更新了我的节点及其包管理器版本:

npm install node@latest -g

npm install npm@latest -g

这样做之后,我转到我的package.json 文件并在scripts 属性之前添加了以下行:

"type": "module",

最后,我返回并尝试使用node app.js 运行我的代码,但直到我使用以下命令后它才起作用:

node --experimental-modules app.js

在您身边,将app.js 替换为您的索引文件。希望它也对你有用

漂亮的编码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-03
    • 2019-10-06
    • 2021-06-09
    • 1970-01-01
    • 2019-03-18
    • 2019-12-07
    • 1970-01-01
    • 2017-10-13
    相关资源
    最近更新 更多