【发布时间】:2019-05-05 14:51:36
【问题描述】:
node_modules/
my_module/
lib/
index.ts
src/
index.ts
我制作了一个自定义模块my_module,并希望将其用作外部库。代码如下:
[src/index.ts]
import { hello } from 'my_module'
console.log(hello)
[node_modules/my_module/index.ts]
export const hello = "Hello"
我的tsconfig.json 说"module": "commonjs", "target": "es6",所以我认为导入关键字在 Typescript 文件中可以很好地工作。
正如我所料,src/index.ts 中的 import 关键字效果很好,但 node_modules/my_module/index.ts 中的 export 关键字是一个意外的标记。我怎样才能解决这个问题?
export const hello = "hello"
^^^^^^
SyntaxError: Unexpected token export
at new Script (vm.js:83:7)
at createScript (vm.js:267:10)
at Object.runInThisContext (vm.js:319:10)
at Module._compile (internal/modules/cjs/loader.js:685:28)
at Module._extensions..js (internal/modules/cjs/loader.js:733:10)
at Object.require.extensions.(anonymous function) [as .ts] (/usr/local/lib/node_modules/ts-node/src/index.ts:431:14)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
at Function.Module._load (internal/modules/cjs/loader.js:552:3)
at Module.require (internal/modules/cjs/loader.js:658:17)
【问题讨论】:
-
预计在发布前将外部模块转译为JS。这至少在使用时节省了一些资源。
-
@estus 谢谢。有什么办法可以禁用自动转译?
-
什么意思?问题是
my_module中的index.ts没有被转译。导入包时应该是dist/import.js。 -
@estus 这就是我想说的。我希望我的每一个代码都用 Typescript 编写,甚至是自定义外部库。大多数关于使用 Typescript 编写节点模块的博客文章都推荐使用
tsc并将转译的代码转换为dist/,但我想让我的库像tsutils(github.com/ajafff/tsutils)。这个库的主要代码是用 Typescript 编写的。它似乎没有转译 JavaScript 代码 -
tsutils 被转译。您可以安装它并检查它是否包含 index.js。
标签: node.js typescript ecmascript-6 commonjs