为什么用Typescript写的node_module会出现语法错误?
Why does syntax error occurs in a Typescript-written node_module?
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)
除非项目被配置为从 node_modules
转译模块(通常不鼓励这样做,因为这是低效且不需要的),预计外部模块将按原样评估,并且 import
关键字在 CommonJS 模块中是不允许的。
my_module
应该在发布之前编译,即 tsc
应该被执行,并且 dist
应该包含转译的 *.js 和 *.d.ts 类型。
main
在
my_module
package.json 应指定入口点,"main": "dist/index.js"
.
该包可以选择包含 .npmrc file 以从已发布的文件中排除 src
,但这不是必需的。
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)
除非项目被配置为从 node_modules
转译模块(通常不鼓励这样做,因为这是低效且不需要的),预计外部模块将按原样评估,并且 import
关键字在 CommonJS 模块中是不允许的。
my_module
应该在发布之前编译,即 tsc
应该被执行,并且 dist
应该包含转译的 *.js 和 *.d.ts 类型。
main
在
my_module
package.json 应指定入口点,"main": "dist/index.js"
.
该包可以选择包含 .npmrc file 以从已发布的文件中排除 src
,但这不是必需的。