NodeJS 无法从导入模块,ts文件

qc6wkl3g  于 2023-04-29  发布在  Node.js
关注(0)|答案(2)|浏览(218)

我以前构建过reactJS项目,但这次我只需要能够从命令行运行命令,所以我想我会使用node来完成任务。然而,我坚持从其他文件导入函数。
我在main.ts中找到了这个:

import testFunction from './testFunction.js'

async function main() {
    console.log('Node Start Project')
    console.log(testFunction('bobby'))
}

(async () => {
    await main()
})();

package.json中:

{
  "name": "testnode",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "main": "node main.ts"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "typescript": "^5.0.4"
  },
  "dependencies": {
    "clarifai-nodejs-grpc": "^8.0.0",
    "dotenv": "^16.0.3",
    "sjcl": "^1.0.8"
  }
}

tsconfig.json中:

{
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "target": "es6",
    "moduleResolution": "node",
    "sourceMap": true,
    "outDir": "dist"
  },
  "lib": ["es2015"]
}

我希望能够使用Typescript。testFunction文件包含如下内容:

export default function testFunction(name: string): string {
        return 'Hello ' + name
    }

但我不断得到的错误是:

(node:12492) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
/Users/bridgeman/Projects/testnode/main.ts:3
import testFunction from './testFunction.js'

我尝试过的事情:

  • "type":"module"添加到我的包中。json文件
  • main.ts重命名为main.mjs
  • testfunction.ts重命名为testfunction.mjs
  • 使用require代替importconst testFunction = require('./testfunction.ts')(这个可以用,但是我不能在我的函数中使用typescript,我得到错误SyntaxError: Unexpected token ':' in the function params

请帮助,我只是想导入功能,并与我的项目上。

mrfwxfqh

mrfwxfqh1#

第一个:npm install ts-node -D
然后:将"main": "node main.ts"替换为"main": "ts-node main.ts"中的"main": "node main.ts"

kxxlusnw

kxxlusnw2#

您需要运行tsc并将文件Node runs更改为dist/main.js。这是因为ourDir是在TypeScript配置中配置的。Node在没有编译的情况下无法运行TypeScript。

相关问题