【问题标题】:Yarn/Node - JavaScript - Issues with Import and Export纱线/节点 - JavaScript - 导入和导出问题
【发布时间】:2020-07-11 11:57:29
【问题描述】:

我只想从另一个文件中导入一个函数,但我收到了以下错误消息:

SyntaxError: 不能在模块外使用 import 语句

我没有使用任何 html 文件。我只使用带有 webpack 的 js 文件,它在控制台上使用yarn start返回结果@

这是包含我要导出的函数的文件的代码:

export function assert(value, desc) {
  return value ? console.log(desc) : console.log('fail')
}

这里是我要导入函数的文件代码:

import {assert} from './assert.js'

function juggle() {
  var result = 0;
  for(var n=0; n < arguments.length; n++) {
    result += arguments[n]
  }

  this.result = result
}

var ninja1 = {}
var ninja2 = {}

juggle.apply(ninja1, [1,2,3,4])
juggle.call(ninja2, 5,6,7,8)

assert(ninja1.result === 10, "juggled via apply")
assert(ninja2.result === 26, "juggled via call")

这是我的package.json

我不知道解决这个问题是否有用,但是如果你想看的话,这里是。

 {
  "name": "c",
  "version": "1.0.0",
  "main": "",
  "scripts": {   
    "start": "node Cap_03/01_apply_e_call.js",
    "test": "echo \"Error: no test specified\" && exit 1"   
     },
  "author": "",  
  "license": "ISC",
  "dependencies": {
    "webpack-dev-server": "^3.9.0"
  },
  "type": "module",  
  "devDependencies": {
    "webpack": "^4.41.2"
  },
  "description": ""
}

【问题讨论】:

  • 你的脚本标签中有type="module"吗?
  • 不,我没有。我没有使用任何 html 文件。我只用 js 文件做所有的事情。因为它不是应用程序。学习语言只是一些简单的文件。有什么办法吗?只使用 js 文件?
  • 通过节点?也许您只需要在 package.json 中添加"type": "module"。看看这个:nodejs.org/api/esm.html#esm_enabling
  • @dork 它仍然无法正常工作。我在我的代码中对其进行了测试。我根据您的建议编辑了问题,它继续显示相同的错误消息。

标签: javascript import export node-modules yarnpkg


【解决方案1】:

从节点 13.2.0+ 开始

验证您是否安装了最新版本的 Node。只需执行以下操作之一:

  • 将“type”:“module”添加到最近的父 package.json。这样,所有 .js 和 .mjs 文件都被解释为 ES 模块。您可以使用 .cjs 扩展名将单个文件解释为 CommonJS。

  • 使用 .mjs 扩展名明确命名文件。所有其他文件,例如 .js 将被解释为 CommonJS,如果 type 未在 package.json 中定义,则这是默认的。

如果您使用older Node version or have to

import 语句只允许在 ES 模块中使用。
有关 CommonJS 中的类似功能,请参阅 import()。

让Node把你的文件当作一个ES模块you need to

  • 在 package.json 中添加 "type": "module"
  • 在节点调用中添加“--experimental-modules”标志

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-21
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2011-05-08
    相关资源
    最近更新 更多