javascript - 如何从终端运行 esnext 文件

标签 javascript node.js typescript

我有点新 typescript ,我写了一个 SDK,我的 .tsconfig 看起来有点像这样

{
  "compilerOptions": {
    "moduleResolution": "node",
    "experimentalDecorators": true,
    "module": "esnext",
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "sourceMap": true,
    "strict": true,
    "target": "es2015",
    "resolveJsonModule": true,
    "esModuleInterop": true,
    "noImplicitAny": false,
    "outDir": "./lib",
  },
  "compileOnSave": true,
  "include": [
    "src"
  ],
  "exclude": ["node_modules"]
}

我使用 tsc 构建它命令。现在我创建了 localtest.js 文件,我将在其中导入它
import getWorkspace from './lib/index'

const randomFunc = async () => {
   // some code 
}
randomFunc()

然后在我的终端 node localtest.js 中使用以下命令运行它这是引发以下错误
function (exports, require, module, __filename, __dirname) { import getWorkspace from './lib/index'
                                                                     ^^^^^^^^^^^^

SyntaxError: Unexpected identifier
    at new Script (vm.js:80:7)
    at createScript (vm.js:274:10)
    at Object.runInThisContext (vm.js:326:10)
    at Module._compile (internal/modules/cjs/loader.js:664:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)
    at startup (internal/bootstrap/node.js:283:19)

关于如何修复它以及为什么会出现上述错误的任何想法

最佳答案

Node 不接受 .js 中的 ES6 导入默认情况下的文件。

  • 在 Node 12 上,添加 --experimental-modules旗帜。如果它更低 - 你必须升级。
  • 将扩展名更改为 .mjs , 或...
  • .js 中使用 ESModules文件(如 TS 发出的文件),添加 "type": "module"到最近的 package.json。

  • 更多信息:
  • https://nodejs.org/dist/latest-v12.x/docs/api/esm.html#esm_enabling
  • https://stackoverflow.com/a/45854500/6003547


  • 或者,您可以更改 "module" compiler option到“commonjs”发出 require s。

    关于javascript - 如何从终端运行 esnext 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59878833/

    相关文章:

    javascript - 使用应用程序组件的 HTML 的 Angular 库

    JavaScript 性能 : access time of properties - 'this' vs 'global object' vs 'variable'

    javascript - 如何获取 Jquery 库中的特定属性?

    Angular CLI : "Unexpected token import" while test execution using karma

    javascript - 带有 'thisArg' 和 'use strict' 的 Nodejs 方法;问题

    css - 使用express,node.js和jade - style.css没有被显示/找到

    javascript - Body-parser 不适用于 typescript ,当我发送请求时,我在 request.body 中得到一个未定义的

    javascript - 在其他列表的基础上填充列表

    javascript - 如何循环 json.stringify 以便它自行更新?

    javascript - 在nodejs中看不到对象的属性