NextJS:运行 服务器上的 Typescript 脚本
NextJS: Run a Typescript script on the server
我有一个 NextJS/Typescript 项目,我想在其中添加一个 CLI 脚本来处理服务器上的一些文件。
不幸的是我无法运行脚本。
示例脚本 src/cli.ts
:
console.log("Hello world");
// Process files
我尝试 运行 脚本:
ts-node src/cli.ts
但我收到此错误消息:
src/cli.ts:1:1 - error TS1208: 'cli.ts' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module.
当我添加空的 'export {}' 语句时,我收到此错误消息:
(node:15923) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
据我所知,现在无法将 NextJS 与 ES 模块一起使用。
在 NextJS 项目中是否有另一种方法 运行 脚本?也许我需要更改 webpack 配置?
我使用的是最新版本:Next 11、Typescript 4.3、Node 14.18、ts-node 10.13,默认为 tsconfig.json
、package.json
。
运行 改为:
npx ts-node --skip-project src/cli.ts
参考:https://github.com/TypeStrong/ts-node#tsconfig
--skip-project
标志不会 resolve/load 您的 tsconfig.json
,因此忽略 Next.js 要求的 "isolatedModules": true
。
您还可以为 ts-node
创建一个单独的 tsconfig
文件并使用 --project [path]
选项。
另一种方法是在 tsconfig.json
本身中覆盖 ts-node
的配置,如下所示:
{
"extends": "ts-node/next/tsconfig.json",
"ts-node": {
"compilerOptions": {
// compilerOptions specified here will override those declared below,
// but *only* in ts-node. Useful if you want ts-node and tsc to use
// different options with a single tsconfig.json.
"isolatedModules": false
}
},
"compilerOptions": {
// typescript options here
}
}
参考:https://github.com/TypeStrong/ts-node#via-tsconfigjson-recommended
我有一个 NextJS/Typescript 项目,我想在其中添加一个 CLI 脚本来处理服务器上的一些文件。
不幸的是我无法运行脚本。
示例脚本 src/cli.ts
:
console.log("Hello world");
// Process files
我尝试 运行 脚本:
ts-node src/cli.ts
但我收到此错误消息:
src/cli.ts:1:1 - error TS1208: 'cli.ts' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module.
当我添加空的 'export {}' 语句时,我收到此错误消息:
(node:15923) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
据我所知,现在无法将 NextJS 与 ES 模块一起使用。
在 NextJS 项目中是否有另一种方法 运行 脚本?也许我需要更改 webpack 配置?
我使用的是最新版本:Next 11、Typescript 4.3、Node 14.18、ts-node 10.13,默认为 tsconfig.json
、package.json
。
运行 改为:
npx ts-node --skip-project src/cli.ts
参考:https://github.com/TypeStrong/ts-node#tsconfig
--skip-project
标志不会 resolve/load 您的 tsconfig.json
,因此忽略 Next.js 要求的 "isolatedModules": true
。
您还可以为 ts-node
创建一个单独的 tsconfig
文件并使用 --project [path]
选项。
另一种方法是在 tsconfig.json
本身中覆盖 ts-node
的配置,如下所示:
{
"extends": "ts-node/next/tsconfig.json",
"ts-node": {
"compilerOptions": {
// compilerOptions specified here will override those declared below,
// but *only* in ts-node. Useful if you want ts-node and tsc to use
// different options with a single tsconfig.json.
"isolatedModules": false
}
},
"compilerOptions": {
// typescript options here
}
}
参考:https://github.com/TypeStrong/ts-node#via-tsconfigjson-recommended