在 TypeScript 中导入 fs

Vie*_*iet 5 node.js typescript

我知道这似乎是一个重复的问题,但我找到的答案均无效:

在我的.ts文件中:

import * as fs from 'fs'; // error: SyntaxError: Unexpected token *
// OR
import fs from 'fs'; // error:
// import fs from 'fs';
//        ^^
// SyntaxError: Unexpected identifier

// OR

import {fs} from 'fs'; // error: module '"fs"' has no exported member 'fs'.ts(2305)


const data: [string, number] = [['one', 1],['two',2]];
function modifyThis(data: any) {
    return  data.map((element: any) => {
        element[1] = 0;
        return element;
    });
}
fs.writeFileSync('./data.txt', modifyThis(data), 'utf8');
Run Code Online (Sandbox Code Playgroud)

我确实有"@types/node": "^12.0.0"我的package.json,我不明白为什么它不起作用。

我使用ts-node,node和代码运行器扩展名执行文件,但它仍然不起作用。我是ts-node全局安装的。

更新:

的输出$ts-node:

$ ts-node modData.ts 
/.../modData.ts:1
import * as fs from 'fs';
       ^

SyntaxError: Unexpected token *
    at Module._compile (internal/modules/cjs/loader.js:721:23)
    at Module.m._compile (....nvm/versions/node/v10.16.0/lib/node_modules/ts-node/src/index.ts:814:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Object.require.extensions.(anonymous function) [as .ts] (....nvm/versions/node/v10.16.0/lib/node_modules/ts-node/src/index.ts:817:12)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:829:12)
    at main (....nvm/versions/node/v10.16.0/lib/node_modules/ts-node/src/bin.ts:226:14)
    at Object.<anonymous> (....nvm/versions/node/v10.16.0/lib/node_modules/ts-node/src/bin.ts:485:3)
Run Code Online (Sandbox Code Playgroud)

更新: tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react"
  },
  "include": [
    "src"
  ]
}
Run Code Online (Sandbox Code Playgroud)

HKK*_*HKK 7

import * as fs from 'fs';

我在项目中使用了该语句,效果很好。

也许检查tsconfig.json文件?

"compilerOptions": {
     "module": "commonjs",
     ...
     /* List of folders to include type definitions from. */
    "types": [
        "node",
        "vue-types",
    ], 
 },
Run Code Online (Sandbox Code Playgroud)


Vie*_*iet 2

我已经解决了问题:\n我需要在应用@types/node程序外部安装包react:

\n\n
$ yarn add @types/node\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以该项目看起来像这样:

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 client\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json\n
Run Code Online (Sandbox Code Playgroud)\n