【发布时间】:2019-08-25 20:15:36
【问题描述】:
好的,我正在尝试创建一个 CLI 工具供我自己使用,基本上它只是解析 hcitool 的标准输出(报告周围的蓝牙设备)。
该工具可以在这里找到:https://github.com/lu4/hcitool-reader
该工具预计将使用 ts-node 运行(ts-node 允许动态运行 TypeScript 代码)。
使用以下命令从本地磁盘全局安装时,我的包可以正常工作:
bash> npm i -g /path/to/local/disk/hcitool-reader/repository
可以通过执行来验证(安装后)该工具:
bash> hcitool-reader
但是,如果我删除旧版本并从 NPM 安装相同的代码:
bash> npm uninstall -g hcitool-reader && npm i -g hcitool-reader
包开始抛出 node.js 语法异常,指出 typescript 语法错误(这是 ts-node 未正确注册的标志)。
bash> hcitool-reader
Trying to register ts-node with tsconfig.json found at:
/home/pi/.config/versions/node/v12.8.0/lib/node_modules/hcitool-reader/tsconfig.json
/home/pi/.config/versions/node/v12.8.0/lib/node_modules/hcitool-reader/src/index.ts:1
import 'reflect-metadata';
^^^^^^^^^^^^^^^^^^
SyntaxError: Unexpected string
at Module._compile (internal/modules/cjs/loader.js:811:22)
at Module._extensions..js (internal/modules/cjs/loader.js:879:10)
at Object.require.extensions.<computed> [as .ts] (/home/pi/.config/versions/node/v12.8.0/lib/node_modules/hcitool-reader/node_modules/ts-node/src/index.ts:465:14)
at Module.load (internal/modules/cjs/loader.js:731:32)
at Function.Module._load (internal/modules/cjs/loader.js:644:12)
at Module.require (internal/modules/cjs/loader.js:771:19)
at require (internal/modules/cjs/helpers.js:68:18)
at Object.<anonymous> (/home/pi/.config/versions/node/v12.8.0/lib/node_modules/hcitool-reader/bootstrap.js:15:20)
at Module._compile (internal/modules/cjs/loader.js:868:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:879:10)
这个错误的奇怪之处在于,代码只有在位于 NPM 的全局包文件夹时才会停止工作,在我的例子中:
/home/pi/.config/versions/node/v12.8.0/lib/node_modules/hcitool-reader
在所有其他情况下,所有其他位置的代码都可以正常工作。
问: ts-node 出了什么问题?
编辑
在我看来,这是一个 ts-node 问题,我已经 created an issue in their repo,正在等待来自 ts-node 团队的一些 cmets
【问题讨论】:
-
能否提供调用
ts-node的代码示例?
标签: node.js typescript npm ts-node