Javascript 如何从终端运行esnext文件
我是一个新的typescript,我写了一个SDK,我的.tsconfig看起来有点像这样Javascript 如何从终端运行esnext文件,javascript,node.js,typescript,Javascript,Node.js,Typescript,我是一个新的typescript,我写了一个SDK,我的.tsconfig看起来有点像这样 { "compilerOptions": { "moduleResolution": "node", "experimentalDecorators": true, "module": "esnext", "noImplicitReturns": true, "noUnusedLocals": true, "sourceMap": true, "
{
"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()
然后在我的终端节点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)
任何关于如何修复它以及为什么会出现上述错误的想法节点默认不接受
.js
文件中的ES6导入
- 在节点12上,添加
标志。如果更低,你必须升级--实验模块
- 将扩展名更改为
,或者.mjs
- 要在
文件(如TS发出的文件)中使用ESModules,请在最近的package.json中添加.js
“type”:“module”
或者,您可以更改为“commonjs”以发出
require
s.节点支持此功能,但它仍然是实验性的。你需要设置一些东西
——实验模块,并设置为使用它
包中的类型
更改为模块
。json
您可以阅读相关文档。这甚至不是合法的ES 6:导入和导出必须是顶级语句。你不能在一个函数里面做。为什么它必须是ES6模块呢?
node --experimental-modules localtest.js
// package.json
{
"type": "module"
}