首页 文章

让节点模块使用typescript

提问于
浏览
1

我在这里遵循了各种各样的线程,但我无法让它工作 . 我想在typescript中编译以下代码 . 这段代码来自一个单独的js文件,但由于我的问题来自模块包含,我正在编译这个:

import tweetnacl from "./node_modules/tweetnacl/nacl"; 
console.log(`here we are`);

我尝试过:使用这个tsconfig.json

{
  "compilerOptions": {
    "target":"ES6",
    "moduleResolution": "classic",
  }
}

使用tsc --module es6 --target es6进行编译并为模块npm install @ types / node的每个选项进行访问也不适用于我 .

我运行tsc --module commonjs test.ts并得到

node_modules/tweetnacl/nacl.d.ts(3,1): error TS1128: Declaration or statement expected.
node_modules/tweetnacl/nacl.d.ts(3,11): error TS1005: ';' expected.
node_modules/tweetnacl/nacl.d.ts(3,25): error TS1005: '{' expected.
node_modules/tweetnacl/nacl.d.ts(21,81): error TS1110: Type expected.
node_modules/tweetnacl/nacl.d.ts(22,9): error TS1131: Property or signature expected.
node_modules/tweetnacl/nacl.d.ts(22,18): error TS1005: ';' expected.
node_modules/tweetnacl/nacl.d.ts(23,18): error TS1005: ';' expected.
node_modules/tweetnacl/nacl.d.ts(24,18): error TS1005: ';' expected.
node_modules/tweetnacl/nacl.d.ts(30,9): error TS1131: Property or signature expected.
node_modules/tweetnacl/nacl.d.ts(30,18): error TS1005: ';' expected.
node_modules/tweetnacl/nacl.d.ts(31,18): error TS1005: ';' expected.
node_modules/tweetnacl/nacl.d.ts(32,5): error TS1128: Declaration or statement expected.
node_modules/tweetnacl/nacl.d.ts(36,110): error TS1110: Type expected.
node_modules/tweetnacl/nacl.d.ts(37,86): error TS1110: Type expected.
node_modules/tweetnacl/nacl.d.ts(52,9): error TS1131: Property or signature expected.
node_modules/tweetnacl/nacl.d.ts(52,18): error TS1005: ';' expected.
node_modules/tweetnacl/nacl.d.ts(53,18): error TS1005: ';' expected.
node_modules/tweetnacl/nacl.d.ts(54,18): error TS1005: ';' expected.
node_modules/tweetnacl/nacl.d.ts(55,18): error TS1005: ';' expected.
node_modules/tweetnacl/nacl.d.ts(56,18): error TS1005: ';' expected.
node_modules/tweetnacl/nacl.d.ts(57,5): error TS1128: Declaration or statement expected.
node_modules/tweetnacl/nacl.d.ts(74,74): error TS1110: Type expected.
node_modules/tweetnacl/nacl.d.ts(77,9): error TS1131: Property or signature expected.
node_modules/tweetnacl/nacl.d.ts(77,18): error TS1005: ';' expected.
node_modules/tweetnacl/nacl.d.ts(78,18): error TS1005: ';' expected.
node_modules/tweetnacl/nacl.d.ts(79,18): error TS1005: ';' expected.
node_modules/tweetnacl/nacl.d.ts(80,18): error TS1005: ';' expected.
node_modules/tweetnacl/nacl.d.ts(81,5): error TS1128: Declaration or statement expected.
node_modules/tweetnacl/nacl.d.ts(85,9): error TS1131: Property or signature expected.
node_modules/tweetnacl/nacl.d.ts(85,18): error TS1005: ';' expected.
node_modules/tweetnacl/nacl.d.ts(86,5): error TS1128: Declaration or statement expected.
node_modules/tweetnacl/nacl.d.ts(87,1): error TS1128: Declaration or statement expected.

如何让节点模块在打字稿中工作?提前致谢

编辑:更新tsc后

tsc --v
Version 3.0.1

我收到了这个错误

test.ts:1:8 - error TS1192: Module '"./node_modules/tweetnacl/nacl"' has no default export.

1 import tweetnacl from "tweetnacl";
     ~~~~~~~~~

1 回答

  • 0

    假设您的 node_modules/tweetnacl/nacl.d.ts 文件看起来像this,基于错误的行号和列号,看起来TypeScript在解析TypeScript 2.0中添加的多种语言结构时遇到了问题 . 如果您使用的是早于2.0版的TypeScript版本(截至撰写本文时已有两年了!),请尝试升级 .

    Round 2: tweetnacl 模块确实没有默认导出 . 看起来导入应该是:

    import * as tweetnacl from "./node_modules/tweetnacl/nacl";
    

相关问题