node.js - 为什么 Typescript 编写的 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 文件中会很好地工作。
正如我所料,import 关键字 insrc/index.ts
运行良好,但 export 关键字 innode_modules/my_module/index.ts
是一个意外的标记。我怎样才能解决这个问题?
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 文件以从发布的文件中排除src
,但这不是必需的。
推荐阅读
- wordpress - bitnami/WordPress 图表 - 在自定义图像中嵌入上传
- python - 如果值相同,切片会给出不正确的结果
- installation - 如何在 Cygwin 上安装和使用 Lex?
- android - 自定义 SwipeToRefresh 移动 RecyclerView Android 嵌套滚动
- scrapy - 如何在response.css中正确定义和scrapy中的yield
- r - 使用 ggplot2 为 R 中的离散变量创建小提琴图、宇宙飞船图或类似的东西
- xaml - 嵌套在水平 StackLayout 中时,多行标签不会调整父 StackLayout 的大小
- mysql - MySQL 8.0 和 PHP 的外键约束格式不正确
- android - Android Studio - 如何从命令行使缓存无效?
- javascript - Pandas DataFrame 打印为字符串