导入和导出在带有 package.json 文件的 Typescript 中不起作用

问题描述 投票:0回答:1

我是打字稿的初学者,目前正在学习它。我在导入和导出自定义函数(我制作的)时遇到了问题。所以基本上,我所做的就是制作 index.ts 文件并编写以下代码:

export function sayHi(): void {
    console.log("Hiiii!");
}

然后我制作了另一个文件(file2.ts)并编写了以下代码:

import  {sayHi}  from './index.js';
sayHi();

现在,这段代码运行得很好......(没有 tsconfig 和 package.json 文件)。 然后,我必须安装询问器,所以我使用以下命令创建了 tsconfig 文件:

tsc init

在目录中创建我的 tsconfig 文件后,代码仍然可以正常工作...... 我的 tsconfig 文件:

  "compilerOptions": {
    "target": "ES2022",                                 
    "module": "NodeNext",                                              
    "moduleResolution": "NodeNext",                     
    "esModuleInterop": true,                                                     
    "forceConsistentCasingInFileNames": true,           
    "strict": true,                                            
    "skipLibCheck": true                                
  }
}

但是当我使用以下方法创建 package.json 文件时:

npm init --yes

然后,它给了我错误:

D:\Courses\GI-AIWMD\Programming\Practice2>node file2.js 文件:///D:/Courses/GI-AIWMD/Programming/Practice2/file2.js:2 Object.defineProperty(exports, "__esModule", { value: true }); ^

ReferenceError:导出未在 ES 模块范围中定义 该文件被视为 ES 模块,因为它具有“.js”文件扩展名,并且“D:\Courses\GI-AIWMD\Programming\Practice2\package.json”包含“type”:“module”。要将其视为 CommonJS 脚本,请将其重命名为使用“.cjs”文件扩展名。 在文件:///D:/Courses/GI-AIWMD/Programming/Practice2/file2.js:2:23 在 ModuleJob.run (节点:内部/模块/esm/module_job:218:25) 在异步 ModuleLoader.import (节点:内部/模块/esm/loader:329:24) 在异步 loadESM 处(节点:内部/进程/esm_loader:34:7) 在异步handleMainPromise(节点:内部/模块/run_main:113:12)

Node.js v20.10.0

我的package.json文件:

{
  "name": "practice2",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "type":"module",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

注意:我尝试设置类型:commonjs,它工作正常,然后代码正在运行,但我无法使用询问器包,所以我无法将类型设置为commonjs,它应该保持类型:模块...

javascript node.js typescript export package.json
1个回答
0
投票

请按照以下步骤操作:

  1. npm init -y [初始化节点项目。它将创建一个 package.json 文件]。
  2. npm install typescript --save-dev
  3. tsc -init [ 初始化打字稿配置文件。它将创建 tsconfig.json 文件]
  4. tsconfig.json 文件集 “rootDir”:'./src'“outDir”:'./dist' [这是约定]
  5. 在项目根目录下创建一个文件夹src,并在src文件夹中创建一个文件index.ts
  6. 在项目根目录下创建一个文件夹dst
  7. 在 tsconfig.json 中添加“include”:[“src”]要编译哪些文件
  8. package.json 文件 "build": "tsc" 中添加脚本,并在终端中运行 npm run build
  9. 从index.ts调用sayHi函数并在另一个文件中定义函数。

用于模块导入安装 npm install @types/node --save-dev

© www.soinside.com 2019 - 2024. All rights reserved.