node.js - 使用 TypeScript 和 nodemon : SyntaxError: Cannot use import statement outside a module

标签 node.js typescript nodemon

我正在转换代码以使用 nodemon 来利用 TypeScript。

在我的package.json中:

  "scripts": {
    "serve-fake-api": "nodemon fake-api/server.ts --watch 'fake-api/*.*'  ",
    "serve-vue": "vue-cli-service serve",
    "serve": "concurrently -k \"npm run serve-fake-api\" \"npm run serve-vue\"",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },

fake-api/server.ts 文件:

import { readFileSync } from 'fs';
import { create, defaults, bodyParser, rewriter, router as _router } from 'json-server';
import { join } from 'path';

const server = create();
const defaultMiddleware = defaults();

// It is recommended to use the bodyParser middleware before any other middleware in your application
server.use(bodyParser);

server.use(defaultMiddleware);

// Define custom routes (routes.json)
const routes = JSON.parse(readFileSync(join(__dirname, 'routes.json'), "utf8"));
server.use(rewriter(routes));

// Add custom middleware before JSON Server router
const customMiddleware = require(join(__dirname, 'middleware.ts'));
server.use(customMiddleware);

// This is where `json-server`'s magic happens ;)
const router = _router(join(__dirname, 'db.json'));

// Start the application by listening to port 3000,
// Although this won't print the nice starting message you see when
// running `json-server` as CLI command, it still runs the app correctly.
server.use(router);
server.listen(3000, () => {
  console.log('JSON Server is running')
});

但是当运行npm runserve时:

[0] C:\Users\eperret\Desktop\tabulator-tests\fake-api\server.ts:1
[0] import { readFileSync } from 'fs';
[0] ^^^^^^
[0]
[0] SyntaxError: Cannot use import statement outside a module

我用谷歌搜索了一下,最终找到了这里:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

是否有解决方法可以继续使用这种导入

最佳答案

我在相关 GitHub 问题线程中回答了我的问题: https://github.com/remy/nodemon/issues/1625#issuecomment-560115741

我通过在 tsconfig.json 中使用 commonjs 更改模块类型(而不是 esnext)解决了我的问题:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
...

关于node.js - 使用 TypeScript 和 nodemon : SyntaxError: Cannot use import statement outside a module,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58778055/

相关文章:

node.js - 从 Node.js 公开方法的最佳方式是什么?

javascript - 用于发布的 Angular Node 模块的版本控制

javascript - 如何从nodejs检查Redis缓存连接状态

html - TypeScript:生成枚举值的类型或接口(interface)

typescript - 如何在 TypeScript 中做动态对象

node.js - 配置 nodemon 以刷新相同的选项卡

javascript - 使用函数内检索和更新的数据更新数组

Angular 5 Debounce 自定义异步验证器

Node.js( Node :12276) [SEQUELIZE0004] DeprecationWarning

javascript - 运行后以编程方式停止nodemon