TS1128 Ошибка объявления или оператора в конце файла, которая не исчезнет go, даже если код выглядит нормально - PullRequest
1 голос
/ 04 апреля 2020

Это точно такой же вопрос, который задан в TS1128: ожидается объявление или утверждение (конец файла) , но на этот вопрос не было получено ответа.

Я пишу проект NodeJS / JavaScript / Keystone. Моя среда IDE WebStorm указывает на то, что в моем коде есть ошибка (это в конце файла):

enter image description here

Я пытался последовательно комментировать Извлечение / удаление одного раздела кода за раз, пока у меня ничего не осталось. Только если я удалю весь код, ошибка исчезнет.

Понятия не имею, откуда возникла ошибка. Все скобки / скобки, кажется, совпадают. Я также не знаю, является ли это ошибкой TypeScript, ошибкой ESLint или чем-то еще.

Код компилируется, но проект больше не работает должным образом, и мне интересно, является ли тот факт, что ошибка указано указывает на некоторые основные проблемы, которые приводят к сбою проекта.

Код для этого файла:

import { Keystone } from '@keystonejs/keystone';
import { GraphQLApp } from '@keystonejs/app-graphql';
import { AdminUIApp } from '@keystonejs/app-admin-ui';
import { StaticApp } from '@keystonejs/app-static';
import { LocalFileAdapter } from '@keystonejs/file-adapters';
import { IframelyOEmbedAdapter } from '@keystonejs/oembed-adapters';
import { MongooseAdapter } from '@keystonejs/adapter-mongoose';
import { KnexAdapter } from '@keystonejs/adapter-knex';
import { PasswordAuthStrategy } from '@keystonejs/auth-password';

import lists from './lists';
import checkArticlePublishDates from './jobs/checkArticlePublishDates';

import log from './util/log';
import seedDb from './util/seedDb';

require('dotenv').config();

let authStrategy;

const PROJECT_NAME = process.env.PROJECT_NAME;

const iframelyAdapter = new IframelyOEmbedAdapter({
    apiKey: process.env.IFRAMELY_KEY
});

const staticPath = 'public';
const staticRoute = '';
const imageFileAdapter = new LocalFileAdapter({
    src: `${staticPath}/images`,
    path: `${staticRoute}/images`
});

const keystone = new Keystone({
    name: PROJECT_NAME,
    adapter: new MongooseAdapter()
});
const createAuth = () => {
    authStrategy = keystone.createAuthStrategy({
        type: PasswordAuthStrategy,
        list: 'User',
        config: {
            identityField: 'username', // default: 'email'
            secretField: 'password' // default: 'password'
        }
    });
};

const createLists = () => lists(keystone, { imageFileAdapter, iframelyAdapter });

const setupCronJobs = async () => {
    const checkPub = await checkArticlePublishDates(keystone);
};

const boot = async () => {
    createLists();
    createAuth();

    await keystone.prepare({
        cors: { origin: true, credentials: true }
    });

    await setupCronJobs();
};

boot();
export default {
    keystone,
    apps: [
        new GraphQLApp(),
        new AdminUIApp({
            adminPath: '/admin',
            hooks: require.resolve('./admin/'),
            authStrategy,
            enableDefaultRoute: true
        }),
        new StaticApp({
            path: '/',
            src: 'public',
            fallback: 'index.html'
        })
    ]
};

Мой .eslintrc файл

{
  "parser": "babel-eslint",
  "parserOptions": {
    "ecmaVersion": 2020,
    "sourceType": "module",
    "ecmaFeatures": {
      "jsx": true,
      "modules": true
    }
  },
  "extends": [
    "eslint:recommended",
    "prettier",
    "plugin:react/recommended",
 ],
  "plugins": [
    "prettier",
    "react",
    "react-hooks"
  ],
  "env": {
    "es6": true,
    "node": true,
    "mocha": true,
    "browser": true
  },
  "rules": {
    "react-hooks/rules-of-hooks": "error",
    "react-hooks/exhaustive-deps": "warn",
    "react/prop-types": 1,
    "react/jsx-uses-react": "error",
    "react/jsx-uses-vars": "error",
    "react/no-unescaped-entities": "warn",
    "react/no-find-dom-node": 0,
        "comma-dangle": ["error", "never"],
    "global-require": 0
  }
}

и мой tsconfig.json файл

{
  "compilerOptions": {
    "target": "ES6",
    "lib": [
      "esnext",
      "dom"
    ],
    "skipLibCheck": true,
    "outDir": "tsout",
    "strict": false,
    "forceConsistentCasingInFileNames": true,
    "esModuleInterop": true,
    "module": "commonjs",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "sourceMap": true,
    "alwaysStrict": true,
    "jsx": "react"
  },
  "exclude": [
    "node_modules"
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...