我以前构建过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
代替import
:const testFunction = require('./testfunction.ts')
(这个可以用,但是我不能在我的函数中使用typescript,我得到错误SyntaxError: Unexpected token ':' in the function params
)
请帮助,我只是想导入功能,并与我的项目上。
2条答案
按热度按时间mrfwxfqh1#
第一个:
npm install ts-node -D
。然后:将
"main": "node main.ts"
替换为"main": "ts-node main.ts"
中的"main": "node main.ts"
。kxxlusnw2#
您需要运行
tsc
并将文件Node runs更改为dist/main.js
。这是因为ourDir
是在TypeScript配置中配置的。Node在没有编译的情况下无法运行TypeScript。