twa*_*sta 11 node.js es6-modules next.js
我有一个正在运行的 nextjs 项目。
我需要创建一个可以从 CLI 运行的脚本,该脚本使用我为下一个项目编写的一些 CRUD 库。
**/scripts/backup-assets.js **
import {getAllProjectsData} from '../lib/api/projects'
async function main() {
const allProjectsData = await getAllProjectsData()
console.info({allProjectsData})
}
main()
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
$ node scripts/backup-assets.js
(node:9736) 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)
C:\Users\...\scripts\backup-assets.js:1
import {getAllProjectsData} from '../lib/api/projects'
^^^^^^
SyntaxError: Cannot use import statement outside a module
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1033:15)
at Module._compile (node:internal/modules/cjs/loader:1069:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47
Run Code Online (Sandbox Code Playgroud)
phi*_*e_b 22
使用多伦多证券交易所。它与 NextJS 一起开箱即用,同时支持 JavaScript和TypeScript。
安装它:
npm install --save-dev tsx
Run Code Online (Sandbox Code Playgroud)
声明你的脚本。在package.json:
...
"scripts": {
...
"my-js-script": "tsx scripts/my-script.js",
"my-ts-script": "tsx scripts/my-script.ts"
},
Run Code Online (Sandbox Code Playgroud)
运行:
npm run my-js-script
npm run my-ts-script
Run Code Online (Sandbox Code Playgroud)
小智 2
我还没有找到一种方法来做到这一点,但这里有一个解决方法:
创建一个名为的 API 路由,/api/scripts该路由需要一个task参数。
添加检查以防止其在生产环境中运行(如果您想在生产环境中运行脚本,则添加身份验证)。
export default async function handler(req, res) {
if (process.env.NODE_ENV === 'production') return res.status(404).end();
switch (req.query.task) {
case 'backup-assets':
// code
case 'migrate-database':
// code
Run Code Online (Sandbox Code Playgroud)
npm run dev
Run Code Online (Sandbox Code Playgroud)
export default async function handler(req, res) {
if (process.env.NODE_ENV === 'production') return res.status(404).end();
switch (req.query.task) {
case 'backup-assets':
// code
case 'migrate-database':
// code
Run Code Online (Sandbox Code Playgroud)
或者直接在浏览器中访问该 URL。
| 归档时间: |
|
| 查看次数: |
6132 次 |
| 最近记录: |