javascript - TS1128 'Očekivana deklaracija ili izjava' pogreška na kraju datoteke koja ne nestaje iako kod izgleda ispravno
Ovo je točno isto pitanje postavljeno u TS1128: Očekuje se deklaracija ili izjava (kraj datoteke), ali to pitanje nikada nije dobilo odgovor.
Pišem NodeJS/JavaScript/Keystone projekt. Moj WebStorm IDE pokazuje da imam pogrešku u mom kodu (ovo je na kraju datoteke):
Pokušao sam postupno komentirati/uklanjati jedan dio koda u isto vrijeme, sve dok mi ne ostane ništa. Samo ako uklonim sav kod, greška nestaje.
Nemam pojma odakle dolazi pogreška. Svi zagrade/oklapači se čine podudarnima. Također ne znam je li ovo pogreška u TypeScriptu, pogreška u ESLintu ili nešto drugo.
Kod se kompajlira, ali projekt više ne funkcionira ispravno, i pitam se znači li to što se pojavljuje pogreška na neki temeljni problem zbog kojeg projekt ne uspijeva.
Kod za ovu datoteku je:
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'
})
]
};
Moj .eslintrc datoteka je
{
"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
}
}
i moja datoteka tsconfig.json je
{
"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"
]
}
Odgovor #1
Kao što je @Cerulean naveo, činilo se da postoji problem s datotekom za mene. Imao sam točno
Kreirao sam novu datoteku, zalijepio kod u nju kao običan tekst i spremio datoteku. Nema problema s ESLintom. Dakle, obrisao sam staru datoteku i ovu novu datoteku preimenovao u naziv stare datoteke. Radi besprijekorno, bez grešaka.
